【发布时间】:2014-07-18 02:29:09
【问题描述】:
我有两个列表,它们的项目类型不同。它们的类型(Item1 和 Item2)都有一个名为“Name”的属性。我想遍历 list1 中的所有项目。如果 list1 中的任何项目的名称与 list2 中的项目名称相同,那么我想将其添加到 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);
【问题讨论】: