Sdílet prostřednictvím


Filtrování dat v jazyce C# pomocí LINQ

Filtrování odkazuje na operaci omezení sady výsledků tak, aby obsahovala pouze ty prvky, které splňují zadanou podmínku. Označuje se také jako výběr prvků, které odpovídají zadané podmínce.

Důležité

Tyto ukázky používají zdroj dat System.Collections.Generic.IEnumerable<T>. Zdroje dat, které jsou založené na System.Linq.IQueryProvider, používají zdroje dat System.Linq.IQueryable<T> a stromy výrazů . Stromy výrazů mají omezení povolené syntaxe jazyka C#. Každý zdroj dat IQueryProvider, například EF Core, může navíc uplatňovat další omezení. Projděte si dokumentaci ke zdroji dat.

Následující obrázek ukazuje výsledky filtrování posloupnosti znaků. Predikát operace filtrování určuje, že znak musí být "A".

Diagram znázorňující operaci filtrování LINQ

Standardní metody operátoru dotazu, které provádějí výběr, jsou uvedeny v následující tabulce:

Název metody Popis Syntaxe výrazu dotazu jazyka C# Další informace
PodleTypu Vybere hodnoty v závislosti na jejich schopnosti převést na zadaný typ. Nelze použít. Enumerable.OfType

Queryable.OfType
Kde Vybere hodnoty založené na predikátové funkci. where Enumerable.Where

Queryable.Where

Následující příklad používá klauzuli where k filtrování těch řetězců z pole, které mají určitou délku.

Poznámka:

Běžné zdroje dat pro tuto oblast najdete v článku Přehled standardních operátorů dotazů .

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

Ekvivalentní dotaz pomocí syntaxe metody se zobrazí v následujícím kódu:

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

Viz také