C# - Linq überprüfen, ob eine Liste enthält alle anderen Listen-Elemente beim Vergleich auf eine Eigenschaft
Lerne ich Linq und ich habe zwei Objekt-Listen. Ich möchte vergleichen, eine dieser Listen gegen die anderen, um zu sehen, wenn man von den Eigenschaften der Objekte innerhalb der it abgestimmt werden können, um diejenigen, die in der anderen Liste.
So, ich code für die, aber ich will es ändern, um Linq-Ausdrücke.
var list1 = new List<Product>
{
new Product{SupplierId = 1,ProductName = "Name1"},
new Product{SupplierId = 2,ProductName = "Name2"},
new Product{SupplierId = 3,ProductName = "Name3"},
new Product{SupplierId = 4,ProductName = "Name4"}
};
var list2 = new List<Product>
{
new Product {SupplierId = 1,ProductName = "Name5"},
new Product {SupplierId = 4,ProductName = "Name6"}
};
private static bool CheckLists(List<Product> list1, List<Product> list2)
{
foreach (var product2 in list2)
{
bool result = false;
foreach (var product in list1)
{
if (product.SupplierId == product2.SupplierId)
{
result = true;
break;
}
}
if (!result)
{
return false;
}
}
return true;
}
Wie kann ich es mit Linq ?
- Gibt es irgendein Grund Sie nicht mit
Contains
? - Für die Verwendung
Contains
sollte er überschreibenEquals
- Für zusätzliche Klarheit, für alle, die dies Lesen, anschließend die Prüfung getan wird, ob alle Elemente in list2 gefunden werden können, die in list1.
InformationsquelleAutor | 2017-11-21
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
würden Sie sagen, wenn alle list1 items sind in list2.
Any()
nimmt ein Prädikat; das wird nicht kompilieren.Möchten Sie überprüfen, ob es irgendwelche IDs in
list1
, die nicht inlist2
:list1
undlist2
rückwärts.Zu sehen, dass
list1
enthält allelist2
prüfen Sie, obAny
vonlist1
entsprichtAll
vonlist2
:Allerdings würde ich wahrscheinlich schreiben Sie eine generische Erweiterungsmethode:
Dann können Sie es nennen wie: