2012-04-17 72 views
4

这可能是一个非常简单的LINQ问题。我正在使用LINQ to SQL并拉取数据集。
我当前的代码是这样的:LINQ:如何测试集合中是否包含值

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"条件......

非常感谢 - kcross

回答

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

这一直是有史以来最快的答案 - 谢谢! – keynesiancross 2012-04-17 19:04:18

+0

它不会让我接受...... – keynesiancross 2012-04-17 19:04:25

+0

@keynesiancross:有更快的,相信我:) – Tigran 2012-04-17 19:06:28

2

你创建你正在寻找的数字列表或数组:

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 .... 
相关问题