Freigeben über


Filtern von Daten in C# mit LINQ

Mit Filtern wird die Einschränkung des Resultsets auf Elemente bezeichnet, die eine bestimmte Bedingung erfüllen. Es wird auch als Auswahl von Elementen bezeichnet, die der angegebenen Bedingung entsprechen.

Von Bedeutung

In diesen Beispielen wird eine System.Collections.Generic.IEnumerable<T>-Datenquelle verwendet. Datenquellen, die auf System.Linq.IQueryProvider basieren, verwenden System.Linq.IQueryable<T>-Datenquellen und Ausdrucksbaumstrukturen. Ausdrucksbaumstrukturen haben Einschränkungen für die zulässige C#-Syntax. Darüber hinaus kann jede IQueryProvider-Datenquelle, z. B. EF Core, weitere Einschränkungen erzwingen. Konsultieren Sie die Dokumentation für Ihre Datenquelle.

Die folgende Abbildung zeigt die Ergebnisse des Filterns einer Abfolge von Zeichen. Das Prädikat für den Filtervorgang gibt an, dass das Zeichen "A" sein muss.

Diagramm, das einen LINQ-Filtervorgang zeigt

Die Standardabfrageoperatormethoden, die die Auswahl ausführen, sind in der folgenden Tabelle aufgeführt:

Methodenname BESCHREIBUNG C#-Abfrageausdruckssyntax Mehr Informationen
OfType Wählt Werte aus, je nachdem, ob sie in einen angegebenen Typ konvertiert werden können. Nicht zutreffend. Enumerable.OfType

Queryable.OfType
Wobei Wählt Werte aus, die auf einer Prädikatfunktion basieren. where Enumerable.Where

Queryable.Where

Im folgenden Beispiel wird die where Klausel verwendet, um aus einem Array die Zeichenfolgen zu filtern, die eine bestimmte Länge aufweisen.

Hinweis

Im Artikel "Übersicht über Standardabfrageoperatoren " finden Sie informationen zu den allgemeinen Datenquellen für diesen Bereich.

string[] words = ["the", "quick", "brown", "fox", "jumps"];

IEnumerable<string> query = from word in words
                            where word.Length == 3
                            select word;

foreach (string str in query)
{
    Console.WriteLine(str);
}

/* This code produces the following output:

    the
    fox
*/

Die entsprechende Abfrage mit Methodensyntax ist im folgenden Code dargestellt:

string[] words = ["the", "quick", "brown", "fox", "jumps"];

IEnumerable<string> query =
    words.Where(word => word.Length == 3);

foreach (string str in query)
{
    Console.WriteLine(str);
}

/* This code produces the following output:

    the
    fox
*/

Siehe auch