Wprowadzenie do LINQ w języku Visual Basic
Zintegrowane języka Query (LINQ) zwiększa możliwości kwerendy do Visual Basic i dostarcza proste oraz wydajne narzędzia podczas pracy z danymi wszelkiego rodzaju.Zamiast wysyłania kwerendy do bazy danych do przetworzenia lub Praca z składni kwerendy będą inne dla każdego typu danych, która jest przeszukiwana, LINQ wprowadza kwerend w ramach Visual Basic języka.Używa zunifikowany składni, niezależnie od typu danych.
LINQ pozwala zbadać danych z bazy danych programu SQL Server, XML, tablice w pamięci i kolekcje, ADO.NET zestawów danych lub innych danych zdalnego lub lokalnego źródła obsługiwane przez LINQ.W tym wszystkie posiadającymi wspólne Visual Basic elementów języka.Ponieważ zapytania są napisane Visual Basic języka, wyniki kwerendy są zwracane jako obiekty jednoznacznie.Obiekty te obsługują IntelliSense, pozwalającego na szybsze pisanie kodu i wychwytywanie błędów w kwerendach w czasie kompilacji, a nie w czasie wykonywania.Zapytań LINQ może służyć jako źródło dodatkowych kwerend w uściślaniu wyników.Może być związany także do formantów tak, aby użytkownicy mogli łatwo przeglądać i modyfikować wyników kwerendy.
Na przykład poniższy przykład kodu pokazuje kwerendę LINQ, która zwraca listę klientów z kolekcji i grup, które je na podstawie ich lokalizacji.
' Obtain a list of customers.
Dim customers As List(Of Customer) = GetCustomers()
' Return customers that are grouped based on country.
Dim countries = From cust In customers
Order By cust.Country, cust.City
Group By CountryName = cust.Country
Into CustomersInCountry = Group, Count()
Order By CountryName
' Output the results.
For Each country In countries
Debug.WriteLine(country.CountryName & " count=" & country.Count)
For Each customer In country.CustomersInCountry
Debug.WriteLine(" " & customer.CompanyName & " " & customer.City)
Next
Next
' Output:
' Canada count=2
' Contoso, Ltd Halifax
' Fabrikam, Inc. Vancouver
' United States count=1
' Margie's Travel Redmond
W tym temacie znajdziesz informacje dotyczące następujących obszarów:
Uruchamianie przykładów
Dostawcy programu LINQ
Struktura programu LINQ
Operatory zapytań LINQ języka Visual Basic
Łączenie z bazą danych za pomocą programu LINQ to SQL
Języka Visual Basic oferuje obsługę programu LINQ
Odroczone i natychmiastowe wykonanie kwerendy
XML w języku Visual Basic
Zasoby pokrewne
Jak oraz instruktaże
Uruchamianie przykładów
Aby uruchomić przykłady, we wstępie i w sekcji "Struktury z zapytań LINQ", należy dołączyć następujący kod, który zwraca wykaz klienci i zamówienia.
' Return a list of customers.
Private Function GetCustomers() As List(Of Customer)
Return New List(Of Customer) From
{
New Customer With {.CustomerID = 1, .CompanyName = "Contoso, Ltd", .City = "Halifax", .Country = "Canada"},
New Customer With {.CustomerID = 2, .CompanyName = "Margie's Travel", .City = "Redmond", .Country = "United States"},
New Customer With {.CustomerID = 3, .CompanyName = "Fabrikam, Inc.", .City = "Vancouver", .Country = "Canada"}
}
End Function
' Return a list of orders.
Private Function GetOrders() As List(Of Order)
Return New List(Of Order) From
{
New Order With {.CustomerID = 1, .Amount = "200.00"},
New Order With {.CustomerID = 3, .Amount = "600.00"},
New Order With {.CustomerID = 1, .Amount = "300.00"},
New Order With {.CustomerID = 2, .Amount = "100.00"},
New Order With {.CustomerID = 3, .Amount = "800.00"}
}
End Function
' Customer Class.
Private Class Customer
Public Property CustomerID As Integer
Public Property CompanyName As String
Public Property City As String
Public Property Country As String
End Class
' Order Class.
Private Class Order
Public Property CustomerID As Integer
Public Property Amount As Decimal
End Class
Dostawcy programu LINQ
A dostawcy LINQ mapy sieci Visual Basic zapytań LINQ w źródle danych, którego dotyczy kwerenda.Podczas pisania programu LINQ, dostawca ma tę kwerendę i tłumaczy go na polecenia, które źródła danych będą mogły wykonać.Dostawca również konwertuje dane ze źródła do obiektów, które tworzą wyników kwerendy.Wreszcie Konwertuje obiekty danych podczas wysyłania aktualizacji do źródła danych.
Visual Basiczawiera następujący dostawcy LINQ.
Dostawca |
Opis |
LINQ do obiektów |
LINQ do obiektów dostawcy umożliwia kwerendy kolekcje w pamięci i tablice.Jeoli obiekt obsługuje albo IEnumerable lub IEnumerable<T> interfejsu, LINQ do obiektów dostawcy umożliwia kwerendy go. Można włączyć LINQ do obiektów dostawcy, importując System.Linq obszar nazw, które są importowane domyślnie dla wszystkich Visual Basic projektów. Aby uzyskać więcej informacji na temat programu LINQ to dostawca obiektów, zobacz LINQ do obiektów. |
LINQ to SQL |
Programu LINQ to SQL dostawcy umożliwia kwerendy i modyfikować dane w bazie danych programu SQL Server.Ułatwia to mapa modelu do tabel i obiektów w bazie danych aplikacji. Visual Basicsprawia, że łatwiej pracować z programu LINQ to SQL, w tym programie Object Relational Designer (Projektant O/R).To projektant jest używany do tworzenia modelu obiektowego w aplikacji, która mapuje do obiektów w bazie danych. Projektant O/R również zapewnia funkcje mapowania procedur przechowywanych i funkcji DataContext obiektu, która zarządza komunikacją z bazą danych i zapisuje stan dla kontroli optymistycznej współbieżności. Aby uzyskać więcej informacji na temat programu LINQ to SQL dostawcy, zobacz LINQ to SQL.Aby uzyskać więcej informacji o programie Object Relational Designer, zobacz Object Relational Designer (O/R Designer). |
LINQ to XML |
Programu LINQ to XML dostawcy umożliwia wyszukiwania i modyfikowania XML.Można zmodyfikować XML w pamięci lub XML można ładować od i Zapisz XML do pliku. Dodatkowo, programu LINQ to XML dostawcy umożliwia literały XML i właściwości osi XML, które umożliwią XML bezpośrednio w swojej Visual Basic kod.Aby uzyskać więcej informacji, zobacz XML w języku Visual Basic. |
Program LINQ to DataSet |
Programu LINQ to DataSet dostawcy umożliwia kwerendy i aktualizacji danych w ADO.NET zestawu danych.Moc LINQ można dodać do aplikacji, które używają zestawów danych w celu uproszczenia i rozszerzyć swoje możliwości podczas badania, agregowanie i aktualizowanie danych w zestawie danych. Aby uzyskać więcej informacji, zobacz LINQ to DataSet. |
Struktura programu LINQ
Zapytanie LINQ często nazywa się wyrażenie kwerendy, składa się z kombinacji klauzule kwerendy, które identyfikują źródła danych i zmiennych iteracji dla kwerendy.W wyrażeniu kwerendy można również dołączyć instrukcje do sortowania, filtrowanie, grupowanie i łączenia lub obliczenia dotyczące wprowadzenia w źródle danych.Składnia wyrażeń kwerenda jest podobna do składni SQL; w związku z tym można znaleźć wiele składni znane.
W wyrażeniu kwerendy zaczyna się od From klauzuli.Ta klauzula identyfikuje dane Yródłowe kwerendy i zmiennych, które są stosowane w odniesieniu do każdego elementu danych źródłowych indywidualnie.Te zmienne są nazwane zakres zmiennych lub zmiennych iteracji.From Klauzuli jest wymagane dla kwerendy, z wyjątkiem Aggregate kwerendy, gdzie From klauzula jest opcjonalne.Po zakres i źródło kwerendy są identyfikowane w From lub Aggregate klauzule, może zawierać dowolną kombinację klauzul kwerendy, aby ograniczyć kwerendę.Szczegółowe informacje dotyczące klauzul kwerendy Visual Basic operatory zapytań LINQ w dalszej części tego tematu.Na przykład, poniższa kwerenda identyfikuje źródłowego zbioru danych o klientach jako customers zmienna i zmienną iteracji, o nazwie cust.
Dim customers = GetCustomers()
Dim queryResults = From cust In customers
For Each result In queryResults
Debug.WriteLine(result.CompanyName & " " & result.Country)
Next
' Output:
' Contoso, Ltd Canada
' Margie's Travel United States
' Fabrikam, Inc. Canada
W tym przykładzie jest prawidłową kwerendą sama z siebie. jednak kwerendy staje się znacznie silniejsze, po dodaniu więcej klauzul kwerendy w celu sprecyzowania wynik.Na przykład, można dodać Where klauzula filtrować wynik przez jedną lub więcej wartości.Wyrażenia kwerendy są jednej linii kodu; można je po prostu dołączyć klauzul dodatkowych kwerend na końcu kwerendy.Działanie kwerendy można podzielić na wiele wierszy tekstu w celu poprawienia czytelności za pomocą znaku podkreślenia (_) kontynuacji wiersza.Poniższy przykład kodu pokazuje przykład kwerendę, która obejmuje Where klauzuli.
Dim queryResults = From cust In customers
Where cust.Country = "Canada"
Innym klauzula kwerendy potężny jest Select klauzuli, która umożliwia przywrócenie tylko wybranych pól ze źródła danych.Zapytania LINQ zwracają agreguje ustalony zbiór obiektów.Kwerenda może zwracać zbiór typów anonimowych lub nazwanych.Można użyć Select klauzula zwrócić tylko jednego pola ze źródła danych.Gdy to zrobisz, rodzaj Kolekcja zwracana jest typ tego pojedynczego pola.Można również użyć Select klauzula zwrócić wiele pól ze źródła danych.Gdy to zrobisz, typ Kolekcja zwracana jest nowy typ anonimowy.Można również dopasować pola zwracanych przez kwerendę do pól określonego typu nazwanego.Poniższy przykład kodu pokazuje wyrażenie kwerendy, która zwraca kolekcję typy anonimowe, których składników wypełniane danymi z wybranych pól ze źródła danych.
Dim queryResults = From cust In customers
Where cust.Country = "Canada"
Select cust.CompanyName, cust.Country
Zapytania LINQ można również połączyć wiele źródeł danych i zwraca pojedynczy wynik.Można to zrobić z jednym lub więcej From klauzule, lub za pomocą Join lub Group Join klauzul kwerendy.Poniższy przykład kodu pokazuje wyrażenie kwerendy, która łączy danych klienta i zamówienia i zwraca kolekcję typy anonimowe, zawierające klientów i dane zamówienie.
Dim customers = GetCustomers()
Dim orders = GetOrders()
Dim queryResults = From cust In customers, ord In orders
Where cust.CustomerID = ord.CustomerID
Select cust, ord
For Each result In queryResults
Debug.WriteLine(result.ord.Amount & " " & result.ord.CustomerID & " " & result.cust.CompanyName)
Next
' Output:
' 200.00 1 Contoso, Ltd
' 300.00 1 Contoso, Ltd
' 100.00 2 Margie's Travel
' 600.00 3 Fabrikam, Inc.
' 800.00 3 Fabrikam, Inc.
Można użyć Group Join klauzuli, aby utworzyć hierarchiczną zestawu wyników, który zawiera zbiór obiektów klienta.Każdy obiekt klienta ma właściwość, która zawiera zbiór wszystkich zamówień tego klienta.Poniższy przykład kodu pokazuje wyrażenie kwerendy, która łączy danych klienta i zamówienia w wyniku hierarchiczną i zwraca kolekcję typy anonimowe.Kwerenda zwraca typ, który zawiera CustomerOrders właściwość, która zawiera kolekcję danych zamówienia nabywcy.Zawiera także OrderTotal właściwość, która zawiera sumę sum dla wszystkich zamówień tego klienta.(Ta kwerenda jest równoważne LEFT OUTER JOIN).
Dim customers = GetCustomers()
Dim orders = GetOrders()
Dim queryResults = From cust In customers
Group Join ord In orders On
cust.CustomerID Equals ord.CustomerID
Into CustomerOrders = Group,
OrderTotal = Sum(ord.Amount)
Select cust.CompanyName, cust.CustomerID,
CustomerOrders, OrderTotal
For Each result In queryResults
Debug.WriteLine(result.OrderTotal & " " & result.CustomerID & " " & result.CompanyName)
For Each ordResult In result.CustomerOrders
Debug.WriteLine(" " & ordResult.Amount)
Next
Next
' Output:
' 500.00 1 Contoso, Ltd
' 200.00
' 300.00
' 100.00 2 Margie's Travel
' 100.00
' 1400.00 3 Fabrikam, Inc.
' 600.00
' 800.00
Istnieje kilka dodatkowych LINQ kwerendy operatorów, które służy do tworzenia wyrażeń potężny kwerendy.Następnej sekcji tego tematu omówiono różne klauzule kwerendy, których można używać w wyrażeniach kwerend.Aby uzyskać szczegółowe informacje o Visual Basic kwerendy klauzule, zobacz Kwerendy (Visual Basic).
Operatory zapytań LINQ języka Visual Basic
Klasy w System.Linq obszaru nazw i inne obszary nazw obsługi zapytań LINQ obejmują metody, które mogą być wywoływane na tworzenie i modyfikowanie kwerend opartych na potrzeby aplikacji.Visual Basiczawiera słowa kluczowe dla typowych klauzul kwerendy, jak opisano w poniższej tabeli.
Termin |
Definicja |
Albo From klauzuli lub Aggregate klauzuli jest wymagane do rozpoczęcia kwerendy.A From klauzula określa źródłowego zbioru i zmienną iteracji dla kwerendy.Na przykład: |
|
Opcjonalne.Deklaruje zestaw zmiennych iteracji dla kwerendy.Na przykład:
Jeśli Select nie jest określony, zmiennych iteracji dla kwerendy składają się ze zmiennych iteracji, określonej przez From lub Aggregate klauzuli. |
|
Opcjonalne.Określa, że warunek filtrowania dla kwerendy.Na przykład: |
|
Opcjonalne.Określa kolejność sortowania dla kolumn w kwerendzie.Na przykład: |
|
Opcjonalne.Łączy dwie kolekcje w jedną kolekcję.Na przykład:
|
|
Opcjonalne.Grupuje elementy zestawu wyników.Można zastosować funkcji agregujących do każdej grupy.Na przykład: |
|
Opcjonalne.Łączy dwie kolekcje do pojedynczego hierarchicznej kolekcji.Na przykład:
|
|
Albo From klauzuli lub Aggregate klauzuli jest wymagane do rozpoczęcia kwerendy.Aggregate Klauzula WHERE odnosi się jedną lub więcej funkcji agregujących do kolekcji.Na przykład, można użyć Aggregate klauzuli, aby obliczyć sumę dla wszystkich elementów, zwróconych przez kwerendę.
Można również użyć Aggregate klauzula zmodyfikować zapytanie.Na przykład, można użyć Aggregate pozwala na przeprowadzenie obliczeń na zbiór powiązanych kwerendy. |
|
Opcjonalne.Oblicza wartość i przypisuje go do nowej zmiennej w kwerendzie.Na przykład: |
|
Opcjonalne.Ogranicza wartości bieżącej zmiennej iteracji wyeliminowanie zduplikowanych wartości w wynikach kwerendy.Na przykład: |
|
Opcjonalne.Pomija określoną liczbę elementów w kolekcji, a następnie zwraca pozostałe elementy.Na przykład: |
|
Opcjonalne.Omija elementy w kolekcji, tak długo, jak określony warunek jest true , a następnie zwraca pozostałe elementy.Na przykład: |
|
Opcjonalne.Zwraca określoną liczbę elementów sąsiadujących z początku kolekcji.Na przykład: |
|
Opcjonalne.Zawiera elementy w kolekcji, tak długo, jak określony warunek jest true i pomija pozostałe elementy.Na przykład: |
Aby uzyskać szczegółowe informacje o Visual Basic kwerendy klauzule, zobacz Kwerendy (Visual Basic).
Można użyć dodatkowych funkcji zapytanie LINQ przez wywołującego członków typów agreguje ustalony i queryable, świadczone przez LINQ.Można użyć te dodatkowe możliwości, wywołując operator konkretne zapytanie na wynik wyrażenia kwerendy.Na przykład, następujący kod w przykładzie wykorzystano Union metoda, aby połączyć wyniki dwóch kwerend w wyniku jednej kwerendy.Używa ToList<TSource> metoda zwraca wynik kwerendy jako Lista ogólna.
Public Function GetAllCustomers() As List(Of Customer)
Dim customers1 = From cust In domesticCustomers
Dim customers2 = From cust In internationalCustomers
Dim customerList = customers1.Union(customers2)
Return customerList.ToList()
End Function
Aby uzyskać szczegółowe informacje dodatkowe możliwości LINQ, zobacz Omówienie operatory kwerendy standardowe.
Łączenie z bazą danych za pomocą programu LINQ to SQL
W Visual Basic, identyfikowania obiektów bazy danych programu SQL Server, takich jak tabele, widoki i procedury przechowywane, chcesz uzyskać dostęp za pomocą LINQ do pliku SQL.LINQ to SQL plik ma rozszerzenie .dbml.
Gdy masz prawidłowe połączenie z bazą danych programu SQL Server, można dodać programu LINQ to SQL klas szablon elementu projektu.Spowoduje to wyświetlenie Object Relational Designer (Projektant O/R).Projektant O/R pozwala na przeciąganie elementów, które chcesz uzyskać dostęp do kodu z Server Explorer/Database Explorer na powierzchni projektanta.Dodaje programu LINQ to SQL plik DataContext obiektu do projektu.Ten obiekt zawiera właściwości i kolekcje dla tabel i widoków, które mają dostęp do i metody dla procedur przechowywanych, które chcesz się połączyć.Po zapisaniu zmian do programu LINQ to SQL (.dbml) plik była dostępna tych obiektów w kodzie przez odwołanie się do DataContext obiekt, który jest zdefiniowany przez projektanta O/R.DataContext Obiektu o nazwie projektu na podstawie nazwy użytkownika programu LINQ to SQL plik.Na przykład, utworzy LINQ to SQL plik o nazwie Northwind.dbml DataContext obiektu o nazwie NorthwindDataContext.
Przykłady z instrukcjami krok po kroku, zobacz Jak: kwerendy bazy danych przy użyciu LINQ (Visual Basic) i Jak: wywołać procedurę przechowywaną przy użyciu LINQ (Visual Basic).
Języka Visual Basic oferuje obsługę programu LINQ
Visual Basiczawiera inne ważne cechy, które wykorzystać LINQ proste i zmniejszyć ilość kodu, który trzeba napisać do wykonywania zapytań LINQ.Należą do nich następujące:
Typy anonimowe, które umożliwiają tworzenie nowego typu, w oparciu o wyniku kwerendy.
Niejawnie wpisane zmiennych, umożliwiają odroczyć, określający typ i niech kompilator wywnioskować typu, w oparciu o wyniku kwerendy.
Rozszerzenie metody, które umożliwiają rozszerzenie istniejącego typu z swoje własne metody bez modyfikowania sam typ.
Aby uzyskać szczegółowe informacje, zobacz Visual Basic funkcje obsługujące LINQ.
Odroczone i natychmiastowe wykonanie kwerendy
Wykonanie kwerendy jest niezależna od tworzenia kwerendy.Po utworzeniu kwerendy, jego wykonania zostanie wywołany przez oddzielny mechanizm.Kwerendy mogą być wykonywane tak szybko, jak to zdefiniowano (natychmiastowego wykonania), lub mogą być przechowywane definicji i kwerendy, które mogą być wykonywane później (wykonanie odroczonego).
Domyślnie podczas tworzenia kwerendy, samej kwerendzie nie jest wykonywane natychmiast.Zamiast tego definicja kwerendy jest przechowywany w zmiennej, który jest używany, aby odwołać się za wynik kwerendy.Kiedy zmienna wynik kwerendy jest dostępny w dalszej części kodu, takie jak w For…Next jest wykonywane w pętli, kwerenda.Ten proces jest określany jako wykonanie odroczonego.
Kwerendy również mogą być wykonywane, gdy są one zdefiniowane, które jest określane jako natychmiastowego wykonania.Stosując metodę, która wymaga dostępu do poszczególnych elementów wyniku zapytania, może wyzwolić natychmiastowego wykonania.Może to być wynikiem tym funkcji agregującej, takie jak Count, Sum, Average, Min, lub Max.Aby uzyskać więcej informacji na temat funkcji agregujących, zobacz Klauzula agregacji (Visual Basic).
Za pomocą ToList lub ToArray metody również wymusi natychmiastowego wykonania.Może to być przydatne, gdy użytkownik chce natychmiast wykonać kwerendę i buforuje wyników.Aby uzyskać więcej informacji na temat tych metod, zobacz Konwersja typów danych.
Aby uzyskać więcej informacji na temat wykonywania kwerendy, zobacz Pisanie pierwszej kwerendy LINQ (Visual Basic).
XML w języku Visual Basic
Kod XML jest wyposażony w Visual Basic zawierać literały XML i właściwości osi XML, które umożliwiają łatwe tworzenie, dostęp, kwerendy i modyfikować XML w kodzie.Literały XML umożliwiają pisanie bezpośrednio w kodzie XML.Kompilator języka Visual Basic traktuje XML jako obiekt pierwszej klasy danych.
Poniższy przykład kodu pokazuje, jak utworzyć XML element, dostęp do jego elementów podrzędnych i atrybuty i kwerendy zawartość elementu za pomocą LINQ.
' Place Imports statements at the top of your program.
Imports <xmlns:ns="http://SomeNamespace">
Module Sample1
Sub SampleTransform()
' Create test by using a global XML namespace prefix.
Dim contact =
<ns:contact>
<ns:name>Patrick Hines</ns:name>
<ns:phone ns:type="home">206-555-0144</ns:phone>
<ns:phone ns:type="work">425-555-0145</ns:phone>
</ns:contact>
Dim phoneTypes =
<phoneTypes>
<%= From phone In contact.<ns:phone>
Select <type><%= phone.@ns:type %></type>
%>
</phoneTypes>
Console.WriteLine(phoneTypes)
End Sub
End Module
Aby uzyskać więcej informacji, zobacz XML w języku Visual Basic.
Zasoby pokrewne
Tematu |
Opis |
W tym artykule opisano funkcje języka XML w Visual Basic mogą być wyszukiwane i które umożliwiają dodawanie XML jako obiekty najwyższej jakości danych w sieci Visual Basic kod. |
|
Zawiera informacje referencyjne dotyczące klauzul kwerendy, które są dostępne w Visual Basic. |
|
Zawiera ogólne informacje, wskazówki programowania i przykłady dla LINQ. |
|
Zawiera ogólne informacje, wskazówki programowania i przykłady dla programu LINQ to SQL. |
|
Zawiera ogólne informacje, wskazówki programowania i przykłady dla LINQ do obiektów. |
|
Zawiera łącza do informacji ogólnych, orientacji programowania i próbek dla programu LINQ to ADO.NET. |
|
Zawiera ogólne informacje, wskazówki programowania i przykłady dla programu LINQ to XML. |
Jak oraz instruktaże
Jak: kwerendy bazy danych przy użyciu LINQ (Visual Basic)
Jak: wywołać procedurę przechowywaną przy użyciu LINQ (Visual Basic)
Jak: modyfikowanie danych w bazie danych przy użyciu LINQ (Visual Basic)
Jak: łączenie danych z LINQ za pomocą sprzężenia (Visual Basic)
Jak: sortowania wyników kwerendy przy użyciu LINQ (Visual Basic)
Jak: filtrowanie wyników kwerendy przy użyciu LINQ (Visual Basic)
Jak: licznik, Suma lub średnia danych przy użyciu LINQ (Visual Basic)
Jak: znaleźć minimalna lub maksymalna wartość wyniku kwerendy przy użyciu LINQ (Visual Basic)
Walkthrough: Creating LINQ to SQL Classes (O/R Designer)
How to: Assign Stored Procedures to Perform Updates, Inserts, and Deletes (O/R Designer)
Rekomendowane rozdziałów książki
Chapter 17: LINQwProgramming Visual Basic 2008
Zobacz też
Zadania
Koncepcje
Omówienie LINQ XML w języku Visual Basic
DataContext Methods (O/R Designer)