查看两个列表中匹配的项目

本文关键字:项目 列表 两个 | 更新日期: 2023-09-27 17:57:41

不要说我有两个列表

清单1:

"汤姆","弗兰克","Lacey"

清单2:

"弗兰克","汤姆"

需要什么查询才能显示汤姆和弗兰被重复?

我试图比较的列表非常大,如果我做了这样的事情:

 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似乎是适当的操作过程。如果您正在处理一个公共键上的对象的匹配列表,您可能会选择加入这些列表并投影结果。

您应该使用Intersect:

var items = List1.Intersect(List2); // Tom, Frank

您可以使用intersect:

List<string> list3 = list1.Intersect(list2).ToList();