Filtern von Daten in C# mit LINQ
Mit Filtern wird die Einschränkung des Resultsets auf Elemente bezeichnet, die eine bestimmte Bedingung erfüllen. Dies wird auch als Auswahl von Elementen bezeichnet, die der angegebenen Bedingung entsprechen.
Wichtig
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 Zeichenfolge. Das Prädikat für den Filtervorgang gibt an, dass das Zeichen A sein muss.
Die Methoden des Standardabfrageoperators, die die Auswahl ausführen, sind in der folgenden Tabelle aufgeführt:
Methodenname | Beschreibung | C#-Abfrageausdruckssyntax | Weitere Informationen |
---|---|---|---|
OfType | Wählt Werte aus, je nach ihrer Fähigkeit, in einen angegebenen Typ umgewandelt zu werden. | Nicht zutreffend. | Enumerable.OfType Queryable.OfType |
Where | Wählt Werte aus, die auf einer Prädikatfunktion basieren. | where |
Enumerable.Where Queryable.Where |
Im folgenden Beispiel wird die where
-Klausel verwendet, um die Zeichenfolgen aus einem Array zu filtern, die eine bestimmte Länge aufweisen.
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
*/