比较list使用linq

本文关键字:使用 linq String list 比较 | 更新日期: 2023-09-27 18:16:07

我有3个list

ListMaster contains {1,2,3,4,....} ..getting populated from DB
List1 contains {1,3,4}
List2 contains {1,3,95}

如何使用linq检查哪些列表项存在于主列表中

比较list<String>使用linq

var inMaster = List1.Intersect(ListMaster);

var inMaster = List1.Intersect(List2).Intersect(ListMaster);

检查master

中是否存在list1, list2中的item
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);

我可以使用list .all来检查另一个列表中的所有项吗字符串

的列表

你想知道一个列表的所有元素是否都在另一个列表中。然后使用Except + Any更有效(如果列表很大),因为IntersectExcept在内部使用集合,而All循环所有元素。

那么,例如,主列表是否包含List1List2的所有字符串?

bool allInMaster = !List1.Concat(List2).Except(ListMaster).Any();

您可以使用Enumerable.Intersect方法,如;

使用默认值产生两个序列的集合交集相等比较器用于比较值。

var inMaster1 = List1.Intersect(ListMaster);
var inMaster2 = List2.Intersect(ListMaster);

这是DEMO