Heim >Backend-Entwicklung >C++ >Wie kann LINQ Elemente in einer Liste basierend auf dem Vorhandensein von Elementen in einer anderen Liste effizient filtern?
Verwenden Sie eine LINQ-Abfrage, um Elemente in der Liste zu filtern
LINQ bietet eine effiziente Möglichkeit, Elemente in einer Liste basierend darauf zu filtern, ob das Element in einer anderen Liste vorhanden ist. Bitte sehen Sie sich das Codebeispiel unten an:
<code class="language-csharp">class Program { static void Main(string[] args) { // 示例数据 List<Person> peopleList1 = new List<Person>() { new Person() { ID = 1 }, new Person() { ID = 2 }, new Person() { ID = 3 } }; List<Person> peopleList2 = new List<Person>() { new Person() { ID = 1 }, new Person() { ID = 2 }, new Person() { ID = 3 }, new Person() { ID = 4 }, new Person() { ID = 5 } }; } } class Person { public int ID { get; set; } }</code>
Wir müssen die Elemente in peopleList2 finden, die nicht in peopleList1 sind. Dies kann über LINQ erreicht werden.
Verwenden Sie die Except()-Methode
LINQ stellt die Methode Except()
bereit, die alle Elemente in der ersten Liste zurückgibt, die nicht in der zweiten Liste enthalten sind. Wir können es wie folgt verwenden:
<code class="language-csharp">var result = peopleList2.Except(peopleList1);</code>
Dadurch wird eine Sammlung zurückgegeben, die Personen mit den IDs 4 und 5 enthält.
Verwenden Sie die LINQ-Abfragesyntax
LINQ ermöglicht uns auch die Durchführung von Filtervorgängen mithilfe der Abfragesyntax. Hier ist eine Möglichkeit, mit der Abfragesyntax das gleiche Ergebnis zu erzielen:
<code class="language-csharp">var result = from p in peopleList2 where !peopleList1.Any(p2 => p2.ID == p.ID) select p;</code>
Diese Abfrage liefert die gleichen Ergebnisse wie die Methode Except()
.
Leistungsbeschreibung:
Es ist zu beachten, dass die zeitliche Komplexität beider Methoden O(n*m) beträgt, wobei n und m die Größen der beiden verglichenen Listen sind. Dies bedeutet, dass mit zunehmender Größe der Liste die für den Filtervorgang erforderliche Zeit erheblich zunimmt. Bei großen Datensätzen müssen möglicherweise andere Methoden zur Optimierung der Leistung untersucht werden.
Das obige ist der detaillierte Inhalt vonWie kann LINQ Elemente in einer Liste basierend auf dem Vorhandensein von Elementen in einer anderen Liste effizient filtern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!