【问题标题】:Simplest way to check db values against values in an array根据数组中的值检查数据库值的最简单方法
【发布时间】:2013-12-20 21:14:32
【问题描述】:

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

【问题讨论】:

    标签: c# .net


    【解决方案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>
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-16
      • 2013-08-13
      • 2012-12-09
      • 1970-01-01
      • 1970-01-01
      • 2013-03-09
      • 1970-01-01
      相关资源
      最近更新 更多