合并列表并仅返回重复项

时间:2012-12-12 20:49:36

标签: c# linq list merge duplicates

说我有两个清单:

List<string>foo=new List<string>();
List<string>bar=new List<string>();

我想合并这两个列表并返回另一个列表,只包含两个列表中的重复项。
所以,如果我有:

//pseudocode
foo={"baz","lemons","somethingelse"}
bar={"what","another","baz","somethingelse","kitten"}

我希望它返回一个新列表:

//pseudocode
dupes={"baz","somethingelse"}

我认为使用LINQ将是最好的镜头。但是,我还没有想到,因为我的LINQ经验很差。

3 个答案:

答案 0 :(得分:17)

Intersect是你想要的,它是LINQ的一部分。

dupes = foo.Intersect(bar).ToList();

确保您的文件中引用了System.Linq命名空间。

答案 1 :(得分:3)

你想要两组的“相交”。

dupes = foo.Intersect(bar);

答案 2 :(得分:1)

使用交集:

var res = lst1.Intersect(lst2);