如何使用Lambda Expression交叉多个列表?

时间:2012-06-28 20:24:16

标签: c# lambda intersect

我有一些清单。他们的数量尚不清楚。

例如(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 Expression完成?

5 个答案:

答案 0 :(得分:5)

您可以使用Enumerable.Intersect

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

答案 1 :(得分: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));

答案 2 :(得分:1)

list1.Intersect(list2).Intersect(list3).Intersect(list4);

答案 3 :(得分:0)

您在寻找Intersect吗?

答案 4 :(得分:0)

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

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