Sdílet prostřednictvím


LINQ a obecné typy (C#)

LINQdotazy jsou založeny na obecných typů, které byly zavedeny ve verzi 2.0 .NET Framework.Důkladná znalost generics není třeba před zahájením psaní dotazů.Chcete však pochopit dva základní koncepty:

  1. Při vytváření instance třídy obecnou kolekci jako List, "T" nahradit typu objektů, které bude uchovávat seznam.Například seznam řetězců vyjádřena jako List<string>a seznam Customer objektů je vyjádřen jako List<Customer>.Obecný seznam silný a poskytuje mnoho výhod kolekcí, které ukládají jejich prvky jako Object.Pokud se pokusíte přidat Customer do List<string>, obdržíte chybu v době kompilace.Protože není nutné provádět typu run-time obsazení je snadná obecný kolekcí.

  2. IEnumerableje rozhraní, které umožňuje provést výčet pomocí tříd obecnou kolekci foreach prohlášení.Obecnou kolekci třídy podporu IEnumerable stejně jako obecné kolekce třídy, například ArrayList podporu IEnumerable.

Další informace o generics viz Obecné typy (Průvodce programováním v C#).

IEnumerable &lt;T&gt; proměnné v LINQ dotazy

LINQproměnných dotazu jsou zadány jako IEnumerable nebo odvozený typ, jako například IQueryable.Po zobrazení dotazu proměnnou, která je zadána jako IEnumerable<Customer>, pouze znamená, že dotaz při spuštění, vytvoří posloupnost nula nebo více Customer objektů.

IEnumerable<Customer> customerQuery =
    from cust in customers
    where cust.City == "London" 
    select cust;

foreach (Customer customer in customerQuery)
{
    Console.WriteLine(customer.LastName + ", " + customer.FirstName);
}

Další informace naleznete v tématu Vztahy typů v operacích dotazu LINQ (C#).

Takže obecný typ prohlášení kompilátor úchyt

Pokud dáváte přednost, Obecná syntaxe lze vyhnout použitím var klíčové slovo.var Klíčové slovo pokyn kompilátoru pohledem na zdroj dat zadaný v odvození typu proměnné dotaz from klauzule.Následující příklad vytváří zkompilovaný kód stejné jako v předchozím příkladu:

var customerQuery2 = 
    from cust in customers
    where cust.City == "London" 
    select cust;

foreach(var customer in customerQuery2)
{
    Console.WriteLine(customer.LastName + ", " + customer.FirstName);
}

var Klíčové slovo je užitečné, jestliže je zřejmé typ proměnné nebo pokud není to důležité explicitně určit obecné typy vnořených jako ty, které jsou vyrobeny skupiny dotazů.Obecně doporučujeme při použití var, uvědomit si, že ji může ztížit kódu pro ostatní uživatele.Další informace naleznete v tématu Implicitně typované lokální proměnné (Průvodce programováním v C#).

Viz také

Referenční dokumentace

Obecné typy (Průvodce programováním v C#)

Další zdroje

Začínáme s dotazy LINQ v jazyce C#