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

时间:2012-04-17 18:55:58

标签: c# linq

这可能是一个非常简单的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 p.RowNum is in the set: {50,60,70}" 我有一个列表或双打,我希望避免使用大量的"OR"条件......

非常感谢 - kcross

2 个答案:

答案 0 :(得分:5)

这样的事情对你有用:

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();

答案 1 :(得分:2)

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

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

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

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