0
我有两个列表中有不同类型的项目。它们的类型(Item1和Item2)都有一个名为“Name”的属性。我想遍历list1中的所有项目。如果list1中的任何项目的名称与列表2中的项目名称相同,那么我想将它添加到listWhereNamesMatch。检查列表项是否包含另一个项目列表中的属性
List<Item1> list1;
List<Item2> list2;
List<Item1> listWhereNamesMatch;
foreach (var item1 in list1)
{
foreach (var item2 in list2)
{
if(item1.Name == item2.Name)
{
listWhereNamesMatch.add(item1);
break;
}
}
}
我有一个查询,但我想知道是否有更清洁或更有效的方法来做到这一点。下面是我有:
var results = list1.FindAll(o => list2.FirstOrDefault(b => b.Name == o.Name) != null);
listWhereNamesMatch.AddRange(results);
你的列表是一个字符串。如果你的列表是一个包含字符串属性的对象呢? – jsirr13
Intersect()将使用默认的相等比较器,根据我的经验,它几乎是基于联接的方法的两倍。 – andleer
@ jsirr13更正为更通用。 – andleer