【问题标题】:Display List Item name from array ID's c#从数组 ID 的 c# 中显示列表项名称
【发布时间】:2014-12-17 15:43:18
【问题描述】:

我想简化以下流程:

var _cat = new Categories();
_cat.GetCategories();

检索:

ID   Name

1    Men
2    Women
3    Unisex
4    Access
5    Kids


string[] prodCat = p.ProductCategory.Split(','); // Contains value 2,3,5

并输出到我的标签:

    foreach (Category c in _cat)
    {
        foreach (string pr in prodCat)
        {
            if (pr.Length > 0 && Convert.ToInt32(pr) == c.Id)
            {
                lblSaveCat.Text += c.CatName + " <br />";
            }
        }
    }

我认为可能有一种更有效的方法来做到这一点,而不是通过 linq 循环?

【问题讨论】:

    标签: c# arrays linq list join


    【解决方案1】:

    你可以使用string.Join:

    var prodCat = p.ProductCategory.Split(',').Select(int.Parse).ToArray();
    
    lblSaveCat.Text = string.Join(" <br />", _cats.Where(x => prodCat.Contains(x.Id)).Select(c => c.CatName));
    

    顺便说一句,如果要在每个值后换行,则需要使用 \r\n 或 Environment.NewLine。 &lt;br /&gt; 不会工作,除非你的标签显示 html。

    【讨论】:

      【解决方案2】:

      效果很好,因为我在 prodCat 的末尾有一个额外的逗号,所以必须做一个小编辑:

          var _cat = new Categories();
          _cat.GetCategories();
      
          p.ProductCategory = p.ProductCategory + "0";
      
          var prodCat = p.ProductCategory.Split(',').Select(int.Parse).ToArray();
      
          lblSaveCat.Text = string.Join("\r\n", _cat.Where(x => prodCat.Contains(x.Id)).Select(c => c.CatName));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-08-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-26
        • 2020-06-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多