Funkcje Visual Basic obsługujące LINQ

Nazwa Zapytanie o języku zintegrowanym (LINQ) odnosi się do technologii w języku Visual Basic, że obsługuje składnię kwerendy i konstruuje w innym języku bezpośrednio w języku.Z LINQ, nie masz uczenia się nowego języka do kwerendy przed zewnętrznym źródłem danych.Wobec danych w relacyjnych bazach danych, Magazyny XML lub obiektów można wysyłać kwerendy za pomocą języka Visual Basic.Integracja ta możliwość wykonywania kwerend na język umożliwia kompilacji sprawdzanie błędów składni i bezpieczeństwa typu.Integracja ta zapewnia również, że znasz już większość trzeba znać, aby napisać bogatych, zróżnicowane kwerend w języku Visual Basic.

W poniższych sekcjach opisano konstrukcji językowych, które obsługują LINQ w wystarczającej ilości szczegółów, aby umożliwić rozpoczęcie w czytaniu wstępne dokumentacji, przykładów kodu i przykładowe aplikacje.Można również kliknąć łącza, aby znaleźć bardziej szczegółowe wyjaśnienia, jak funkcje języka schodzą się razem do włączyć zintegrowane języka kwerend.Jest dobrym miejscem do rozpoczęcia Wskazówki: Pisanie zapytań w Visual Basic.

Wyrażenia w kwerendzie

Wyrażenia kwerendy w języku Visual Basic może być wyrażona w deklaracyjne składnię SQL lub XQuery.W czasie kompilacji składni kwerendy jest konwertowany na wywołania metody do dostawcy LINQ wykonania metody standardowej kwerendy operator rozszerzenie.Określanie aplikacji kwerendy standardowe operatory znajdują się w zasięgu określając odpowiedni obszar nazw z Imports instrukcji.Składni w wyrażeniu kwerendy w języku Visual Basic wygląda następująco:

Dim londonCusts = From cust In customers
                  Where cust.City = "London"
                  Order By cust.Name Ascending
                  Select cust.Name, cust.Phone

Aby uzyskać więcej informacji, zobacz Wprowadzenie do LINQ w Visual Basic.

Zmienne niejawnie maszynowy

Zamiast jawne określenie typu, kiedy oświadczają i zainicjować zmienną, można włączyć kompilatora rozpoznać i przypisywane jako zamówienie typu.To jest określone jako typu lokalnego wnioskowanie.

Zmienne, których typy są niezamierzone są jednoznacznie określone typy, podobnie jak zmienne typu, którego można jawnie określić.Wnioskowanie typu lokalnego działa tylko wtedy, gdy są Definiowanie zmiennej lokalnej wewnątrz treści metody.Aby uzyskać więcej informacji, zobacz Option Infer — Instrukcja i Wnioskowanie o typie lokalnym (Visual Basic).

Poniższy przykład ilustruje wnioskowanie typu lokalnego.Aby wykorzystać ten przykład, należy ustawić Option Infer do On.

' The variable aNumber will be typed as an integer. 
Dim aNumber = 5

' The variable aName will be typed as a String. 
Dim aName = "Virginia"

Wnioskowanie typu lokalnego umożliwia również tworzenie typów anonimowe, są opisane dalej w tej sekcji, które są niezbędne dla zapytań LINQ.

W poniższym przykładzie LINQ wnioskowanie typu występuje, jeśli Option Infer jest albo On lub Off.Występuje błąd w czasie kompilacji, jeśli Option Infer jest Off i Option Strict jest On.

' Query example. 
' If numbers is a one-dimensional array of integers, num will be typed 
' as an integer and numQuery will be typed as IEnumerable(Of Integer)-- 
' basically a collection of integers. 

Dim numQuery = From num In numbers
               Where num Mod 2 = 0
               Select num

Inicjatory obiektu

Inicjatory obiektu są używane w wyrażeniach kwerend, gdy trzeba utworzyć typ anonimowy, do przechowywania wyników kwerendy.Mogą one również używane do inicjowania obiektów nazwane typy poza kwerend.Za pomocą inicjatora obiektu, można zainicjować obiektu w jednym wierszu bez jawnego wywołania konstruktora.Zakładając, że istnieje klasa o nazwie Customer publicznych ma Name i Phone właściwości, wraz z innymi właściwościami, inicjator obiektu mogą być używane w ten sposób:

Dim aCust = New Customer With {.Name = "Mike",
                               .Phone = "555-0212"}

Aby uzyskać więcej informacji, zobacz Inicjatory obiektów: typy nazwane i anonimowe (Visual Basic).

Typy anonimowe

Typy anonimowe zapewniają wygodny sposób tymczasowo grupy zestaw właściwości do elementu, który chcesz uwzględnić w wynikach kwerendy.Dzięki temu można wybrać dowolną kombinację pól dostępnych w kwerendzie, w dowolnej kolejności, bez definiowania typu danych o podanej nazwie elementu.

Typ anonimowy jest konstruowana dynamicznie przez kompilator.Nazwa typu jest przypisywany przez kompilator i mogą ulec zmianie z każdej nowej kompilacji.Dlatego nazwy nie można użyć bezpośrednio.Typy anonimowe są inicjowane w następujący sposób:

' Outside a query. 
Dim product = New With {.Name = "paperclips", .Price = 1.29}

' Inside a query. 
' You can use the existing member names of the selected fields, as was 
' shown previously in the Query Expressions section of this topic. 
Dim londonCusts1 = From cust In customers
                   Where cust.City = "London" 
                   Select cust.Name, cust.Phone

' Or you can specify new names for the selected fields. 
Dim londonCusts2 = From cust In customers
                   Where cust.City = "London" 
                   Select CustomerName = cust.Name,
                   CustomerPhone = cust.Phone

Aby uzyskać więcej informacji, zobacz Typy anonimowe (Visual Basic).

Rozszerzenie metody

Rozszerzenie metody umożliwiają dodanie metody do typu danych lub interfejsu z poza definicją.Ta funkcja umożliwia, w rezultacie, dodawanie nowych metod do istniejącego typu bez modyfikowania faktycznie typu.Operatory kwerendy standardowe są same zestaw metod rozszerzenia, które dostarczają LINQ kwerendy funkcjonalność dla dowolnego typu, który implementuje IEnumerable. Other extensions to IEnumerable include Count, Union, and Intersect.

Następujące metody rozszerzenie dodaje metodę drukowania do String klasy.

' Import System.Runtime.CompilerServices to use the Extension attribute.
<Extension()>
    Public Sub Print(ByVal str As String)
    Console.WriteLine(str)
End Sub

Metoda nosi się podobnie jak metody instancji zwykłych z String:

Dim greeting As String = "Hello"
greeting.Print()

Aby uzyskać więcej informacji, zobacz Metody rozszerzeń (Visual Basic).

Wyrażenia lambda

Wyrażenie lambda jest funkcja bez nazwy, która oblicza i zwraca jedną wartość.W odróżnieniu od funkcji nazwanych wyrażenie lambda mogą być definiowane i wykonywane w tym samym czasie.Poniższy przykład przedstawia 4.

Console.WriteLine((Function(num As Integer) num + 1)(3))

Można przypisać definicji wyrażenia lambda nazwę zmiennej i następnie użyć nazwy, aby wywołać funkcję.Poniższy przykład przedstawia również 4.

Dim add1 = Function(num As Integer) num + 1
Console.WriteLine(add1(3))

W LINQ, wyrażenia lambda opierają się wielu operatorów standardowej kwerendy.Kompilator tworzy wyrażenia lambda do przechwytywania obliczeń, które są zdefiniowane w podstawowych kwerendy metod, takich jak Where, Select, Order By, Take Whilei inne.

Na przykład poniższy kod definiuje kwerendę, która zwraca wszystkie studentów wyższych z listy studentów.

Dim seniorsQuery = From stdnt In students
                   Where stdnt.Year = "Senior" 
                   Select stdnt

Definicja kwerendy jest skompilowany na kod, który jest podobny do następującego przykładu używa dwóch wyrażeń lambda, aby określić argumenty dla Where i Select.

Dim seniorsQuery2 = students.
    Where(Function(st) st.Year = "Senior").
    Select(Function(s) s)

Za pomocą można uruchomić albo w wersji For Each pętli:

For Each senior In seniorsQuery
    Console.WriteLine(senior.Last & ", " & senior.First)
Next

Aby uzyskać więcej informacji, zobacz Lambda — Wyrażenia (Visual Basic).

Zobacz też

Informacje

Option Infer — Instrukcja

Option Strict — Instrukcja

Koncepcje

LINQ i ciągi znaków

Funkcje C# obsługujące LINQ

Inne zasoby

LINQ (zapytania o języku zintegrowanym)

Wprowadzenie do programu LINQ w Visual Basic