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