Verfügt .NET über eine eingebaute Funktion, um zu überprüfen, ob Liste a alle Elemente in Liste b enthält?
Der Zweck dieser Frage besteht darin Stellen Sie fest, ob .NET eine integrierte Funktionalität bereitstellt, um festzustellen, ob eine Liste alle Elemente einer anderen Liste enthält.
Der bereitgestellte Beispielcode versucht, dies zu erfüllen Zu diesem Zweck wird die zweite Liste durchlaufen und überprüft, ob jedes Element in der ersten Liste vorhanden ist. Dieser Ansatz funktioniert, aber man fragt sich, ob eine solche Funktionalität bereits in .NET vorhanden ist.
Antwort:
Für .NET Version 3.5 und höher ist eine solche Funktion tatsächlich verfügbar :
public static bool ContainsAllItems<T>(List<T> a, List<T> b) { return !b.Except(a).Any(); }
Dieser Code vergleicht die Elemente in Liste b mit denen in Liste a und gibt nur dann „true“ zurück, wenn alle Elemente in b auch in vorhanden sind a.
Alternative Implementierung:
Eine konventionellere Implementierung würde das Deklarieren der Methode als generisch und das Akzeptieren eines IEnumerable
public static class LinqExtras { public static bool ContainsAllItems<T>(this IEnumerable<T> a, IEnumerable<T> b) { return !b.Except(a).Any(); } }
Mit diesem Ansatz können Sie leicht überprüfen, ob eine Liste alle Elemente einer anderen enthält, indem Sie Folgendes verwenden:
IEnumerable<int> a = new List<int> { 1, 2, 3, 4 }; IEnumerable<int> b = new List<int> { 2, 4, 6, 8 }; bool containsAll = a.ContainsAllItems(b); // False
Das obige ist der detaillierte Inhalt vonBietet .NET eine integrierte Funktion zum Überprüfen, ob eine Liste alle Elemente einer anderen enthält?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!