Udostępnij za pomocą


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 korzystają ze źródła danych System.Collections.Generic.IEnumerable<T>. Źródła danych oparte na System.Linq.IQueryProvider używają źródeł danych System.Linq.IQueryable<T> i drzew wyrażeń . Drzewa wyrażeń mają ograniczenia w dozwolonej składni języka C#. Ponadto każde źródło danych IQueryProvider, 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".

Diagram przedstawiający operację filtrowania LINQ

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 zdolności do konwersji na określony typ. 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.

Uwaga / Notatka

Typowe źródła danych dla tego obszaru można znaleźć w artykule Omówienie standardowych operatorów zapytań .

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
*/

Zobacz także