繁体   English   中英

根据阵列ID的c#显示列表项名称

[英]Display List Item name from array ID's c#

我想简化以下过程:

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循环更有效的方法来执行此操作?

您可以使用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));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM