Filtrowanie danych w języku C# przy użyciu linQ
Filtrowanie odwołuje się do operacji ograniczania zestawu wyników tak, aby zawierała tylko te elementy, które spełniają określony warunek. Jest on również określany jako wybieranie elementów, które pasują do określonego warunku.
Ważne
Te przykłady używają System.Collections.Generic.IEnumerable<T> źródła danych. Źródła danych oparte na System.Linq.IQueryProviderSystem.Linq.IQueryable<T> źródłach danych i drzewach wyrażeń. Drzewa wyrażeń mają ograniczenia dotyczące dozwolonej składni języka C#. Ponadto każde IQueryProvider
źródło danych, takie jak EF Core , może nakładać więcej ograniczeń. Zapoznaj się z dokumentacją źródła danych.
Poniższa ilustracja przedstawia wyniki filtrowania sekwencji znaków. Predykat operacji filtrowania określa, że znak musi mieć wartość "A".
Standardowe metody operatorów zapytań, które wykonują wybór, są wymienione w poniższej tabeli:
Nazwa metody | opis | Składnia wyrażeń zapytań języka C# | Więcej informacji |
---|---|---|---|
Oftype | Wybiera wartości, w zależności od ich możliwości rzutowania do określonego typu. | Nie dotyczy. | Enumerable.OfType Queryable.OfType |
Gdzie | Wybiera wartości oparte na funkcji predykatu. | where |
Enumerable.Where Queryable.Where |
W poniższym przykładzie użyto klauzuli where
do filtrowania z tablicy tych ciągów o określonej długości.
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
*/
Równoważne zapytanie używające składni metody jest wyświetlane w następującym kodzie:
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
*/