使用linq?</string>比较列表<string>

时间:2013-05-31 08:14:30

标签: c# asp.net .net linq

我有3个列表列表

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

如何使用linq

检查主列表中存在哪些列表项

3 个答案:

答案 0 :(得分:5)

var inMaster = List1.Intersect(ListMaster);

或两个清单:

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

检查list1,list2中是否有任何项目存在于主

var existInMaster = inMaster.Any();

答案 1 :(得分:3)

您可以使用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效率更高(如果列表很大),因为IntersectExcept在内部使用集合,而All循环所有元素。

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

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

答案 2 :(得分:2)

您可以使用Enumerable.Intersect方法;

  

使用默认值生成两个序列的集合交集   等于比较来比较值。

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

这是DEMO