2012-04-17 42 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 .... 
相關問題