简体   繁体   English

与列表比较 <String> 使用linq?

[英]Compare to list<String> using linq?

I have 3 list List 我有3个列表列表

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

how to check Which list items are present in master list using linq 如何使用linq检查主列表中存在哪些列表项

var inMaster = List1.Intersect(ListMaster);

or for both list : 或两个清单:

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

check if any item from list1, list2 exist in master 检查list1,list2中的任何项是否存在于master中

var existInMaster = inMaster.Any();

You can use Enumerable.Intersect : 您可以使用Enumerable.Intersect

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

If you want to know which are in List1 which are not in the master-list, use Except : 如果您想知道List1哪些不在主列表中,请使用Except

var newInList1 = List1.Except(ListMaster);

and for List2 : 对于List2

var newInList2 = List2.Except(ListMaster);

Can i use a list .all to check all item of a list in another list for list of string 我可以使用列表.all来检查另一个列表中列表的所有项目以获取字符串列表

So you want to know if all items of one list are in another list. 因此,您想知道一个列表中的所有项目是否都在另一个列表中。 Then using Except + Any is much more efficient(if the lists are large) because Intersect and Except are using sets internally whereas All loops all elements. 然后使用Except + Any会更有效(如果列表很大),因为IntersectExcept在内部使用集合而All循环所有元素。

So for example, does the master-list contain all strings of List1 and List2 ? 那么例如,master-list是否包含List1List2所有字符串?

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

You can use Enumerable.Intersect method like; 你可以使用Enumerable.Intersect方法;

Produces the set intersection of two sequences by using the default equality comparer to compare values. 通过使用默认的相等比较器来比较值,生成两个序列的集合交集。

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

Here is a DEMO . 这是一个DEMO

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM