2012-06-28 33 views
3

我有几个列表。他们的人数不清楚。如何用Lambda表达式交叉多重列表?

例如(4名单):

List1 List2 List3  List4 
----- ----- -----  ----- 
    1  2  3   4 
    2  4  8   3 
    3  8  4   5 
    4  11  6   1  
    5  3  7   7  
    6  9  11  9 

我想找到那些共同的项目。它可以在MSSQL中使用T-SQL。

其结果将是这样的:

ResultList : (3, 4) 

它是如何与Lambda表达式做了什么?

回答

5

您可以使用Enumerable.Intersect

var commonItems = list1.Intersect(list2).Intersect(list3).Intersect(list4); 
1
list1.Intersect(list2).Intersect(list3).Intersect(list4); 
0

您可以使用Enumerable.Intersect并将List1与List1相交,并将其结果与List3相交,依此类推。

List1.Intersect(List2).Intersect(List3).Intersect(List4) 
2

对于列出的任意号码,你会做这样的事情:

var List<List<int>> lists; //This contains the lists I assume... 
var result = lists.Skip(1).Aggregate(lists.First(), (accum, cur) => accum.Intersect(cur)); 
+0

感谢@GregRos,我已经有交集解决,但正要准备做一些硬编码的列表中任意号码。这只是我失踪的一块。 – Fjarskiptagervitungl