显示数组ID';中的列表项名称;s c#

本文关键字:列表 ID 数组 显示 | 更新日期: 2023-09-27 18:27:28

我想简化以下过程:

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循环?

显示数组ID';中的列表项名称;s c#

您可以使用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'nEnvironment.NewLine。除非你的标签显示html,否则<br />是不起作用的。

效果很好,必须做一个小的编辑,因为我在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));