我正在使用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>
}
}
答案 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>
}