我有兩個列表項目,我怎麼能寫一個linq查詢來比較和提取公共項目(如列表c,如下所示)comapring兩個列表<String>提取公共項目,並把它放在列表
List<string> a = {a, b, c, d}
List<string> b = {c, d, e, f}
List<string> c = {c, d}
我有兩個列表項目,我怎麼能寫一個linq查詢來比較和提取公共項目(如列表c,如下所示)comapring兩個列表<String>提取公共項目,並把它放在列表
List<string> a = {a, b, c, d}
List<string> b = {c, d, e, f}
List<string> c = {c, d}
使用LINQ Intersect
方法。
var commonItems = a.Intersect(b);
變量commonItems
將普通物品從列表a
和列表b
一個集合,這是["c","d"]
如果你想用一個LINQ哪裏查詢做到這一點:
var c = a.Where(x => b.Contains(x))
因爲它們對於兩個列表都很常見,我們可以從一個列表中獲取另一個列表中的項目。就像這樣:
List<string> c = a.Intersect(b)
.ToList();
這可以解讀爲:「從列表中,從而從B名單中的至少一項具有相同的價值選擇項目」
請注意,這隻適用於值類型和引用類型與可用的等式方法。
您也可以撥打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));
FindAll與哪裏不同? – GendoIkari
'FindAll'是一個'List'方法,'Where'返回'IEnumerable
Upvoted返回一個List對象,按要求。 – Daniel
LINQ的方式:
List<string> c = (from i in a
join j in b
on i equals j
select i).ToList();
並且'ToString()'調用用於...? –
不是真的需要,我解決了它。謝謝! – llouk
所以很多答案,也沒有人問,如果列表中可以有內,如果是重複的,那是預期結果。 –