Heim >Backend-Entwicklung >C++ >Wie kann LINQ Elemente in einer Liste basierend auf dem Vorhandensein von Elementen in einer anderen Liste effizient filtern?

Wie kann LINQ Elemente in einer Liste basierend auf dem Vorhandensein von Elementen in einer anderen Liste effizient filtern?

Barbara Streisand
Barbara StreisandOriginal
2025-01-19 18:27:10294Durchsuche

How Can LINQ Efficiently Filter Items in One List Based on the Presence of Items in Another List?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn