說我有以下幾點:比較兩個列表通過一個物業使用LINQ
class Widget1{
public int TypeID { get; set; }
public string Color { get; set; }
}
class Widget2
{
public int TypeID { get; set; }
public string Brand { get; set; }
}
private void test()
{
List<Widget1> widgets1 = new List<Widget1>();
List<Widget2> widgets2 = new List<Widget2>();
List<Widget1> widgets1_in_widgets2 = new List<Widget1>();
//some code here to populate widgets1 and widgets2
foreach (Widget1 w1 in widgets1)
{
foreach (Widget2 w2 in widgets2)
{
if (w1.TypeID == w2.TypeID)
{
widgets1_in_widgets2.Add(w1);
}
}
}
}
我使用兩個foreach循環通過TYPEID到列表比較來填充榜第三。 是否有任何其他方式使用LINQ通過TypeID比較這兩個列表?也許使用Interstect或其他功能?
+1 _「鑑於你的情況下,相交是不是一種選擇」 _這將是一種選擇時,定製'的IEqualityComparer'將是可能的,所以一個普通的基礎類型。然後,您可以將其傳遞給[this overload](http://msdn.microsoft.com/en-us/library/bb355408.aspx),也可以重寫'BaseWidget'中的'Equals' +'GetHashCode'以通過TypeID進行比較'默認。 –