问题描述
|
免得我有两个清单
清单1:
\“汤姆\”,
\“坦率\”,
\“莱西\”
清单2:
\“坦率\”,
\“汤姆\”
显示Tom和Fran被重复的查询将是什么?
我要比较的列表很大,如果我做类似的事情:
var q = from a in List1
from b in List2
where a.Name == b.Name
select a;
这需要很长时间。
解决方法
要查看列表中重复的值,可以使用
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
似乎是适当的操作方法。如果要处理公共键上匹配的对象列表,则可以选择加入列表并投影结果。
,您应该使用相交:
var items = List1.Intersect(List2); // Tom,Frank
,您可以使用相交:
List<string> list3 = list1.Intersect(list2).ToList();