在C#中查找多个列表中的常用项

Sha*_*hin 36 c# generics

我有两个通用列表:

List<string> TestList1 = new List<string>();
List<string> TestList2 = new List<string>();
TestList1.Add("1");
TestList1.Add("2");
TestList1.Add("3");
TestList2.Add("3");
TestList2.Add("4");
TestList2.Add("5");
Run Code Online (Sandbox Code Playgroud)

在这些列表中查找常用项目的最快方法是什么?

Max*_*erl 58

假设您使用具有LINQ的.Net版本,则可以使用Intersect扩展方法:

var CommonList = TestList1.Intersect(TestList2)
Run Code Online (Sandbox Code Playgroud)


Baq*_*qvi 12

如果您有对象列表并想要获取某些属性的公共对象,则使用;

var commons = TestList1.Select(s1 => s1.SomeProperty).ToList().Intersect(TestList2.Select(s2 => s2.SomeProperty).ToList()).ToList();
Run Code Online (Sandbox Code Playgroud)

注意: SomeProperty引用了您要实现的一些条件.