2016-02-04 53 views

回答

9

使用LINQ Intersect方法。

var commonItems = a.Intersect(b); 

變量commonItems將普通物品從列表a和列表b一個集合,這是["c","d"]

1

如果你想用一個LINQ哪裏查詢做到這一點:

var c = a.Where(x => b.Contains(x)) 
1

因爲它們對於兩個列表都很常見,我們可以從一個列表中獲取另一個列表中的項目。就像這樣:

List<string> c = a.Intersect(b) 
        .ToList(); 

這可以解讀爲:「從列表中,從而從B名單中的至少一項具有相同的價值選擇項目」

請注意,這隻適用於值類型和引用類型與可用的等式方法。

2

您也可以撥打List.FindAll

List<string> listA = {a, b, c, d} 
List<string> listB = {c, d, e, f} 

List<string> listC = listA.FindAll(elem => listB.Contains(elem)); 
+0

FindAll與哪裏不同? – GendoIkari

+2

'FindAll'是一個'List'方法,'Where'返回'IEnumerable ','FindAll'返回'List ' –

+0

Upvoted返回一個List對象,按要求。 – Daniel

1

LINQ的方式:

List<string> c = (from i in a 
        join j in b 
        on i equals j 
        select i).ToList(); 
+0

並且'ToString()'調用用於...? –

+0

不是真的需要,我解決了它。謝謝! – llouk

相關問題