检查数组中值的最简单方法

时间:2013-12-04 11:42:51

标签: c# .net

我正在使用C#.NET循环遍历数据库中的项目,并且我试图根据列值是否与数组中的任何值匹配来显示不同的数据。因为我的数组可能有数百个值,所以如果可能的话,我宁愿不创建数百个不同的IF语句。有没有更简单的方法来实现这一目标?

这是一些示例代码,其中“Items”是我的数据库数据,“Categories”是所述数据的列:

var categoryList = new List<int> { 1, 2, 3, 4 };

foreach(var item in Items){
    if(item.Categories.Any(x => @categoryList.Equals(x))){ 
        <p>Yes</p>
    }else{
        <p>No</p>
    }
}

1 个答案:

答案 0 :(得分:1)

我给出的答案基于this question的答案。我根据你的情况修改了代码。

foreach(var item in Items)
{
    bool hasCategory = categoryList.Any(x => item.Categories.Any(c => c.Id == x)); 
}

或更大的集合(性能方面):

bool hasCategory = item.Categories.Select(c => c.Id)
                                  .Intersect(categoryList)
                                  .Any(); 

编辑:

起初我以为item.Categories是ID或其他东西的集合,但后来我开始怀疑。如果item.Categories只是一个整数,则以下代码将起作用:

foreach(var item in Items)
{
    if(categoryList.Any(x => x == item.Categories))
        <p>Yes</p>
    else
        <p>No</p>
}