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

问题描述

| 免得我有两个清单 清单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();
    

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...