0

免得说我有两个清单

清单 1:

“汤姆”、“弗兰克”、“莱西”

清单 2:

“弗兰克”、“汤姆”

显示 Tom 和 Fran 被重复需要的查询是什么?

我要比较的列表非常大,如果我执行以下操作:

 var q = from a in List1
         from b in List2
         where a.Name == b.Name
         select a;

这需要很长时间。

4

3 回答 3

4

要查看哪些值在列表中重复,您可以使用

var results = list1.Intersect(list2);

如果您有兴趣匹配项目并对每个项目做一些事情,您可以使用Join

var results = from item1 in list1 
              join item2 in list2 
              on item1 equals item2 
              select new 
              {
                  // include what you want here
              };

在您的情况下,由于您正在处理字符串列表,Intersect因此似乎是适当的行动方案。如果您正在处理公共键上的对象匹配列表,您可能会选择加入列表并投影结果。

于 2011-05-26T17:52:20.867 回答
3

您应该使用Intersect

var items = List1.Intersect(List2); // Tom, Frank
于 2011-05-26T17:51:50.137 回答
3

您可以使用intersect

List<string> list3 = list1.Intersect(list2).ToList();
于 2011-05-26T17:51:56.363 回答