Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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".
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
*/