[英]Compare to list<String> using linq?
我有3個列表列表
ListMaster contains {1,2,3,4,....} ..getting populated from DB
List1 contains {1,3,4}
List2 contains {1,3,95}
如何使用linq檢查主列表中存在哪些列表項
var inMaster = List1.Intersect(ListMaster);
或兩個清單:
var inMaster = List1.Intersect(List2).Intersect(ListMaster);
檢查list1,list2中的任何項是否存在於master中
var existInMaster = inMaster.Any();
您可以使用Enumerable.Intersect
:
var inMaster = ListMaster.Intersect(List1.Concat(List2));
如果您想知道List1
哪些不在主列表中,請使用Except
:
var newInList1 = List1.Except(ListMaster);
對於List2
:
var newInList2 = List2.Except(ListMaster);
我可以使用列表.all來檢查另一個列表中列表的所有項目以獲取字符串列表
因此,您想知道一個列表中的所有項目是否都在另一個列表中。 然后使用Except
+ Any
會更有效(如果列表很大),因為Intersect
和Except
在內部使用集合而All
循環所有元素。
那么例如,master-list是否包含List1
和List2
所有字符串?
bool allInMaster = !List1.Concat(List2).Except(ListMaster).Any();
你可以使用Enumerable.Intersect
方法;
通過使用默認的相等比較器來比較值,生成兩個序列的集合交集。
var inMaster1 = List1.Intersect(ListMaster);
var inMaster2 = List2.Intersect(ListMaster);
這是一個DEMO
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.