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í System.Collections.Generic.IEnumerable<T> zdroj dat. Zdroje dat založené na System.Linq.IQueryProvider použití System.Linq.IQueryable<T> zdrojů dat a stromů výrazů Stromy výrazů mají omezení povolené syntaxe jazyka C#. Každý zdroj dat, například EF Core, IQueryProvider 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
Oftype Vybere hodnoty v závislosti na jejich schopnosti přetypovat na zadaný typ. Nevztahuje se. 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í z pole řetězce, které mají určitou délku.

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é