Typ relacji w operacjach kwerendy LINQ (C#)
Do pisania kwerend skutecznie, należy zrozumieć, jak typy zmiennych w operacji pełnej kwerendy, wszystkie są powiązane ze sobą.Jeśli zrozumieć relacje te będą łatwiej pojmować LINQ próbki i przykłady kodu w dokumentacji.Ponadto, będzie zrozumieć, występujące w tle, zmienne są niejawnie wpisany przy użyciu var.
LINQoperacji kwerend są silnie wpisane w źródle danych, w samej kwerendzie i wykonanie kwerendy.Typ zmienne w kwerendzie musi być zgodne z typu elementów w źródle danych i typu Zmienna iteracji w foreach instrukcji.Silne wpisując gwarantuje łowionych typu błędów w czasie kompilacji, gdy mogą one być naprawione przed użytkownicy mogą je.
W celu wykazania tych relacji typu, większość przykładów, które należy wykonać użyć, wpisując jawne wszystkich zmiennych.W ostatnim przykładzie pokazano, jak te same zasady stosuje się nawet kiedy użyjesz niejawny wpisywanie za pomocą var..
Kwerendy, które nie przetwarzają danych źródłowych
Na poniższej ilustracji pokazano LINQ do obiektów kwerendy operacji, która wykonuje przekształcenia nie danych.Źródłowa zawiera Sekwencja ciągów i danych wyjściowych kwerendy jest również Sekwencja ciągów.
Argument typu źródła danych określa typ zmiennej zakres.
Typ obiektu, który wybrano określa typ zmiennej kwerendy.W tym miejscu name jest ciągiem.W związku z tym, zmienna kwerendy jest IEnumerable<string>.
Zmienna kwerendy jest podstawy nad w foreach instrukcji.Ponieważ zmienna kwerendy jest sekwencja ciągów, Zmienna iteracji jest również ciąg.
Kwerendy, które przetwarzają dane źródłowe
Na poniższej ilustracji pokazano LINQ to SQL operacji, która wykonuje proste transformacji danych kwerendy.Kwerenda pobiera ciąg Customer obiekty jako danych wejściowych i wybierze opcję tylko Name właściwość w wyniku.Ponieważ Name jest ciągiem, produkuje kwerendy w sekwencji ciągi jako dane wyjściowe.
Argument typu źródła danych określa typ zmiennej zakres.
select Zwracanych przez instrukcję Name właściwość zamiast kompletnego Customer obiektu.Ponieważ Name jest ciągiem znaków, argument typu custNameQuery jest string, nie Customer.
Ponieważ custNameQuery jest sekwencją ciągów, foreach Zmienna iteracji pętli musi być również string.
Na następującej ilustracji pokazano nieco bardziej złożonych transformacji.select Instrukcja zwraca typ anonimowy, który przechwytuje tylko dwóch członków oryginał Customer obiektu.
Argument typu źródła danych jest zawsze typ zmiennej zakres w kwerendzie.
Ponieważ select instrukcji produkuje typ anonimowy, zmienna kwerendy musi być wpisana niejawnie za pomocą var.
Ponieważ typ zmiennej kwerendy jest niejawna, Zmienna iteracji w foreach pętli musi być również niejawne.
Najmu kompilator rozpoznać typ informacji
Chociaż należy zrozumieć relacje typu w operacji kwerendy, mają opcję, aby umożliwić kompilatora dla Ciebie zrobić wszystkich prac.Słowo kluczowe var. może służyć do dowolnej zmiennej lokalnej w operacji kwerendy.Następujący rysunek jest dokładnie równoważne, na przykład liczbę 2, która została omówiona wcześniej.Jedyną różnicą jest to, że kompilator będzie dostarczać silne typu dla każdej zmiennej w operacji kwerendy:
Aby uzyskać więcej informacji o var, zobacz Wpisane niejawnie zmiennych lokalnych (C# Programming Guide).
Zobacz też
Koncepcje
Typ relacji w operacjach kwerendy (Visual Basic)