当比较两个List<T>
对象时,我遇到了保留重复项的问题。目标是将重复项添加到第三个列表中,称为list3
。
list1
大约有5个项目,而list2
有10个项目。
list3
应包含以下内容:00T51234, 00T54567, 00T57894
List<string> list1 = new List<string>(){"00T51234", "00T54567", "00T57894",
"00T55263", "00T58965"};
List<string> list2 = new List<string>(){"00T59633", "00T52222", "00T57894",
"00T52322", "00T51234", "00T54567", "00T57894", "00T57897",
"00T55556", "00T59563"};
List<string> list3 = new List<string>();
我尝试使用Ani的解决方案,如下所示:
var lookup2 = list2.ToLookup(str => str);
var result = from str in list1
group str by str into strGroup
let missingCount
= Math.Max(0, strGroup.Count() - lookup2[strGroup.Key].Count())
from missingStr in strGroup.Take(missingCount)
select missingStr;
然而,这个解决方案并没有给我想要的结果。非常感谢您提供任何帮助。谢谢!
ToList()
完成它。原帖指定所需结果为第三个列表。 - Eric LippertIntersect
是否是Except
的相反操作? - toose121a.Except(b)
将会给你在a
中存在但是在b
中不存在的元素 - 它不会给你在b
中存在但是在a
中不存在的元素。 - D Stanleya.联合(b).除去(a.交集(b))
。 - Erik Philips