Udostępnij za pośrednictwem


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.

Relacja typów danych w zapytaniu programu LINQ

  1. Argument typu źródła danych określa typ zmiennej zakres.

  2. 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>.

  3. 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.

Zapytanie przekształcające typ danych

  1. Argument typu źródła danych określa typ zmiennej zakres.

  2. 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.

  3. 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.

Zapytanie przekształcające typ danych

  1. Argument typu źródła danych jest zawsze typ zmiennej zakres w kwerendzie.

  2. Ponieważ select instrukcji produkuje typ anonimowy, zmienna kwerendy musi być wpisana niejawnie za pomocą var.

  3. 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:

Przepływ typów z niejawnym określaniem typów

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)

Inne zasoby

Wprowadzenie do programu LINQ w C#