LINQ:如何测试值是否包含在集合中

本文关键字:是否 包含 集合 测试 何测试 LINQ | 更新日期: 2023-09-27 18:31:21

这可能是一个非常简单的LINQ问题。我正在使用 LINQ to SQL 并拉取数据集。
我当前的代码是这样的:

var tempTable = (from p in dc.Live_Diffs
                    where p.RowNum = 50
                    select new CustomResult
                    {
                        RowNum = p.RowNum,
                        ED1 = p.ED1,
                        ED2 = p.ED2,
                        ED3 = p.ED3,
                        ED4 = p.ED4,
                        ED5 = p.ED5,
                        ED6 = p.ED6,
                        ED7 = p.ED7,
                        ED8 = p.ED8
                    }).ToList();

我如何指定如下所示的 where 条件:"where p.RowNum is in the set: {50,60,70}" .
我有一个列表或双打,我希望避免使用大量的"OR"条件......

非常感谢 - 克罗斯

LINQ:如何测试值是否包含在集合中

这样的东西应该适合你:

var listOfConditions = new List<int>{50,60,70};
var tempTable = (from p in dc.Live_Diffs
                             where listOfConditions.Contains(p.RowNum)
                             select new CustomResult
                             {   RowNum = p.RowNum ,
                                 ED1 = p.ED1,
                                 ED2 = p.ED2,
                                 ED3 = p.ED3,
                                 ED4 = p.ED4,
                                 ED5 = p.ED5,
                                 ED6 = p.ED6,
                                 ED7 = p.ED7,
                                 ED8 = p.ED8
                             }).ToList();

创建要查找的数字的列表或数组:

List<int> rowNums = new List<int> { 50, 60, 70, };

然后你使用Contains()检查它是否在该列表中。Linq-Sql 会把它变成一个IN或一个OR的列表,我不记得是哪个了。

var tempTable = 
    (from p in dc.Live_Diffs 
    where rowNums.Contains(p.RowNum)
    select ....