Dire che ho il seguente:confrontare due liste Via Uno proprietà utilizzando 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);
}
}
}
}
Sto usando due foreach loop per confrontare le liste da TypeID per popolare una terza lista. C'è un altro modo con LINQ per confrontare questi due elenchi tramite il TypeID? Forse usando Interstect o qualche altra funzione?
+1 _ "Dato il vostro caso, Intersect non è un'opzione" _ Sarebbe un'opzione quando una consuetudine '' IEqualityComparer sarebbe possibile, quindi un tipo di base comune. Quindi potresti passare a [questo overload] (http://msdn.microsoft.com/en-us/library/bb355408.aspx) o sovrascrivere 'Equals' +' GetHashCode' in 'BaseWidget' per confrontare con' TypeID 'di default. –