2011-01-07 43 views
0

伊夫發現使用LINQ,做與具有分隔的多個子句一個WHERE選擇「AND」是易peasy - 然而香港專業教育學院寫入下面的代碼做一個「WHERE」查詢的equivilent與「OR」分隔條件每種情況下。Linq的最佳實踐哪裏有OR子句?

任何人都可以提出更好的建議,因爲它感覺每次都有蹩腳的連接。

var foo = new int[] { 0, 0, 1, 1, 2, 2, 3, 3 }; 
    var bar = new int[] { 0, 2 }; 

    var hum = new List<int>(); 

    foreach (int i in bar) 
     hum.AddRange(foo.Where(a => a == i)); 

編輯:用於更改的AddRange CONCAT ......

+0

我認爲,如果你改一下這個問題可能更容易。不要把注意力放在「我該怎麼做或者」上,想一想「我該怎麼做」。在這種情況下,「如果號碼也在酒吧裏,給我所有的數字」會讓你很快回答喬恩發佈的答案。但是,由於這是特定於您發佈的代碼段,您想要做什麼? – 2011-01-07 16:36:02

+0

好奇,你試圖: 1.設置一堆where子句 2.看看集合是否匹配任何條款 只是想解決問題 – 2011-01-07 16:42:27

回答

1

那麼,該代碼甚至不會工作。 Concat不會修改它所調用的序列 - 它會返回一個新的序列,它是另外兩個序列的連接。

在這種情況下,我認爲想:

var values = foo.Where(x => bar.Contains(x)); 

這是專門針對這種情況,當然 - 還有在LINQ沒有「一般」或條款。

0

使用以下命令:

var hum = bar.Select(x => foo.Where(y => y == x)).SelectMany(z => z).ToList();