Udostępnij za pośrednictwem


LINQ i typy rodzajowe (C#)

LINQkwerendy oparte są na typy rodzajowe, które zostały wprowadzone w wersji 2.0 .NET Framework.Nie musisz dogłębna znajomość generyczne przed rozpoczęciem pisania kwerend.Jednakże można zrozumieć dwóch podstawowych pojęciach:

  1. Podczas tworzenia instancji klasy rodzajowej kolekcji takich jak List<T>, "T" Zamień typ obiektów, które będzie sprawować listy.Na przykład, lista ciągów wyraża się jako List<string>oraz wykaz Customer obiektów jest wyrażana jako List<Customer>.Lista ogólna ma jednoznacznie określony i oferuje wiele korzyści nad kolekcje, które przechowują ich elementy, jak Object.Jeśli użytkownik spróbuje dodać Customer do List<string>, otrzymasz błąd w czasie kompilacji.Ponieważ nie trzeba wykonywać typu run-time odlewania, jest łatwy w użyciu kolekcji rodzajowy.

  2. IEnumerable<T>to interfejs, który umożliwia klasy rodzajowej kolekcji mają być wyliczone przy użyciu foreach instrukcji.Rodzajowej kolekcji klasy pomocy technicznej IEnumerable<T> po prostu jako nierodzajową kolekcji klasy, takie jak ArrayList obsługuje IEnumerable.

Aby uzyskać więcej informacji na temat generyczne, zobacz Generyczne (Podręcznik programowania C#).

IEnumerable &lt;T&gt; zmienne w kwerendach LINQ

LINQzmienne kwerendy są wpisywane jako IEnumerable<T> lub typu pochodnego, takich jak IQueryable<T>.Kiedy zobaczysz zmienna kwerendy, która jest wpisana jako IEnumerable<Customer>, po prostu oznacza, że kwerendy, gdy jest wykonywane, da sekwencji zero lub więcej Customer obiektów.

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

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

Aby uzyskać więcej informacji, zobacz Typ relacji w operacjach kwerendy LINQ (C#).

Najmu kompilator uchwyt rodzajowy typ zgłoszenia

Jeśli wolisz, można uniknąć generic syntax, za pomocą var. słowa kluczowego.var Słowa kluczowego nakazuje kompilatorowi rozpoznać typ zmiennej kwerendy patrząc na źródła danych, określonych w from klauzuli.Poniższy przykład tworzy ten sam kod skompilowany w poprzednim przykładzie:

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

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

var Słowo kluczowe jest przydatne, gdy typ zmiennej jest oczywiste, lub gdy nie jest to ważne jawnie określić zagnieżdżone typy rodzajowe, takie jak te, które są produkowane przez grupy kwerend.Ogólnie rzecz biorąc, firma Microsoft zaleca użycie var, okazuje się, że to może poprawić czytelność kodu trudniejsze dla innych użytkowników.Aby uzyskać więcej informacji, zobacz Wpisane niejawnie zmiennych lokalnych (C# Programming Guide).

Zobacz też

Informacje

Generyczne (Podręcznik programowania C#)

Inne zasoby

Wprowadzenie do programu LINQ w C#