Wprowadzenie do LINQ w Visual Basic

Zapytanie zintegrowane z językiem (LINQ) dodaje możliwości zapytań do języka Visual Basic i zapewnia proste i zaawansowane możliwości podczas pracy z wszystkimi rodzajami danych. Zamiast wysyłać zapytanie do bazy danych do przetworzenia lub pracować z inną składnią zapytań dla każdego typu wyszukiwanych danych, LINQ wprowadza zapytania w ramach języka Visual Basic. Używa ujednoliconej składni niezależnie od typu danych.

LINQ umożliwia wykonywanie zapytań dotyczących danych z bazy danych programu SQL Server, xml, tablic i kolekcji w pamięci, zestawów danych ADO.NET lub innych zdalnych lub lokalnych źródeł danych obsługujących linQ. Można to zrobić za pomocą typowych elementów języka Visual Basic. Ponieważ zapytania są pisane w języku Visual Basic, wyniki zapytania są zwracane jako silnie typizowane obiekty. Te obiekty obsługują funkcję IntelliSense, która umożliwia szybsze pisanie kodu i przechwytywanie błędów w zapytaniach w czasie kompilacji zamiast w czasie wykonywania. Zapytania LINQ mogą służyć jako źródło dodatkowych zapytań w celu uściślania wyników. Można je również powiązać z kontrolkami, aby użytkownicy mogli łatwo wyświetlać i modyfikować wyniki zapytania.

Na przykład poniższy przykład kodu przedstawia zapytanie LINQ, które zwraca listę klientów z kolekcji i grupuje 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

Uruchamianie przykładów

Aby uruchomić przykłady we wprowadzeniu i w sekcji Struktura zapytania LINQ, dołącz następujący kod, który zwraca listy klientów i zamówień.

' 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 LINQ

Dostawca LINQ mapuje zapytania LINQ języka Visual Basic na badane źródło danych. Podczas pisania zapytania LINQ dostawca przyjmuje to zapytanie i tłumaczy je na polecenia, które źródło danych będzie mogło wykonać. Dostawca konwertuje również dane ze źródła na obiekty, które tworzą wynik zapytania. Na koniec konwertuje obiekty na dane podczas wysyłania aktualizacji do źródła danych.

Program Visual Basic obejmuje następujących dostawców LINQ.

Dostawca opis
LINQ do obiektów Dostawca LINQ to Objects umożliwia wykonywanie zapytań dotyczących kolekcji i tablic w pamięci. Jeśli obiekt obsługuje IEnumerable interfejs lub IEnumerable<T> , dostawca LINQ to Objects umożliwia wykonywanie względem niego zapytań.

Możesz włączyć dostawcę LINQ to Objects, importując System.Linq przestrzeń nazw, która jest domyślnie importowana dla wszystkich projektów języka Visual Basic.

Aby uzyskać więcej informacji na temat dostawcy LINQ to Objects, zobacz LINQ to Objects (LINQ to Objects).
LINQ to SQL Dostawca LINQ to SQL umożliwia wykonywanie zapytań i modyfikowanie danych w bazie danych programu SQL Server. Ułatwia to mapowania modelu obiektów dla aplikacji na tabele i obiekty w bazie danych.

Język Visual Basic ułatwia pracę z linQ to SQL przez uwzględnienie Projektant relacyjnych obiektów (O/R Projektant). Ten projektant służy do tworzenia modelu obiektów w aplikacji mapowania na obiekty w bazie danych. Projektant O/R udostępnia również funkcje mapowania procedur składowanych i funkcji na DataContext obiekt, który zarządza komunikacją z bazą danych i przechowuje stan na potrzeby optymistycznych testów współbieżności.

Aby uzyskać więcej informacji na temat dostawcy LINQ to SQL, zobacz LINQ to SQL. Aby uzyskać więcej informacji na temat Projektant relacyjnych obiektów, zobacz LINQ to SQL Tools w programie Visual Studio.
LINQ to XML Dostawca LINQ to XML umożliwia wykonywanie zapytań i modyfikowanie kodu XML. Możesz zmodyfikować kod XML w pamięci lub załadować kod XML z pliku i zapisać go w pliku.

Ponadto dostawca LINQ to XML umożliwia literały XML i właściwości osi XML, które umożliwiają pisanie kodu XML bezpośrednio w kodzie Języka Visual Basic. Aby uzyskać więcej informacji, zobacz XML.
LINQ to DataSet Dostawca LINQ to DataSet umożliwia wykonywanie zapytań i aktualizowanie danych w zestawie danych ADO.NET. Możesz dodać możliwości LINQ do aplikacji korzystających z zestawów danych, aby uprościć i rozszerzyć możliwości wykonywania zapytań, agregowania i aktualizowania danych w zestawie danych.

Aby uzyskać więcej informacji, zobacz LINQ to DataSet.

Struktura zapytania LINQ

Zapytanie LINQ, często nazywane wyrażeniem zapytania, składa się z kombinacji klauzul zapytania, które identyfikują źródła danych i zmienne iteracji zapytania. Wyrażenie zapytania może również zawierać instrukcje dotyczące sortowania, filtrowania, grupowania i łączenia lub obliczeń, które mają być stosowane do danych źródłowych. Składnia wyrażenia zapytania przypomina składnię języka SQL; w związku z tym można znaleźć wiele znanych składni.

Wyrażenie zapytania rozpoczyna się od klauzuli From . Ta klauzula identyfikuje dane źródłowe zapytania i zmienne, które są używane do odwoływania się do każdego elementu danych źródłowych indywidualnie. Te zmienne są nazwane zmiennymi zakresu lub zmiennymi iteracji. Klauzula jest wymagana From dla zapytania, z wyjątkiem Aggregate zapytań, gdzie klauzula jest opcjonalna From . Po zidentyfikowaniu zakresu i źródła zapytania w From klauzulach or Aggregate można uwzględnić dowolną kombinację klauzul zapytania w celu uściślenia zapytania. Aby uzyskać szczegółowe informacje o klauzulach zapytania, zobacz Visual Basic LINQ Query Operators w dalszej części tego tematu. Na przykład następujące zapytanie identyfikuje źródłową kolekcję danych klienta jako customers zmienną, a 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

Ten przykład jest prawidłowym zapytaniem. jednak zapytanie staje się znacznie bardziej zaawansowane, gdy dodasz więcej klauzul zapytania, aby uściślić wynik. Możesz na przykład dodać klauzulę Where , aby filtrować wynik według co najmniej jednej wartości. Wyrażenia zapytania są pojedynczym wierszem kodu; Możesz po prostu dołączyć dodatkowe klauzule zapytania na końcu zapytania. Zapytanie można podzielić na wiele wierszy tekstu, aby zwiększyć czytelność, używając znaku kontynuacji wiersza podkreślenia (_). Poniższy przykład kodu przedstawia przykład zapytania zawierającego klauzulę Where .

Dim queryResults = From cust In customers
                   Where cust.Country = "Canada"

Kolejną zaawansowaną klauzulą zapytania jest klauzula Select , która umożliwia zwracanie tylko wybranych pól ze źródła danych. Zapytania LINQ zwracają wyliczalne kolekcje silnie typiowanych obiektów. Zapytanie może zwrócić kolekcję typów anonimowych lub nazwanych typów. Możesz użyć klauzuli Select , aby zwrócić tylko jedno pole ze źródła danych. Gdy to zrobisz, zwracany typ kolekcji jest typem tego pojedynczego pola. Możesz również użyć klauzuli Select , aby zwrócić wiele pól ze źródła danych. W takim przypadku zwracany typ kolekcji jest nowym typem anonimowym. Możesz również dopasować pola zwracane przez zapytanie do pól określonego nazwanego typu. Poniższy przykład kodu przedstawia wyrażenie zapytania zwracające kolekcję typów anonimowych, które mają elementy członkowskie wypełnione 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 mogą również służyć do łączenia wielu źródeł danych i zwracania jednego wyniku. Można to zrobić za pomocą co najmniej jednej From klauzuli lub przy użyciu Join klauzul lub Group Join zapytania. Poniższy przykład kodu przedstawia wyrażenie zapytania, które łączy dane klienta i zamówienia oraz zwraca kolekcję typów anonimowych zawierających dane klienta i zamówienia.

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.

Klauzulę Group Join można użyć do utworzenia hierarchicznego wyniku zapytania zawierającego kolekcję obiektów klienta. Każdy obiekt klienta ma właściwość zawierającą kolekcję wszystkich zamówień dla tego klienta. Poniższy przykład kodu przedstawia wyrażenie zapytania, które łączy dane klienta i zamówienia jako wynik hierarchiczny i zwraca kolekcję typów anonimowych. Zapytanie zwraca typ, który zawiera CustomerOrders właściwość zawierającą kolekcję danych zamówienia dla klienta. Zawiera również właściwość zawierającą sumę OrderTotal sum dla wszystkich zamówień dla tego klienta. (To zapytanie jest równoważne lewemu sprzężeniu ZEWNĘTRZNEmu).

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 operatorów zapytań LINQ, których można użyć do tworzenia zaawansowanych wyrażeń zapytań. W następnej sekcji tego tematu omówiono różne klauzule zapytania, które można uwzględnić w wyrażeniu zapytania. Aby uzyskać szczegółowe informacje na temat klauzul zapytań języka Visual Basic, zobacz Zapytania.

Operatory zapytań LINQ języka Visual Basic

Klasy w System.Linq przestrzeni nazw i innych przestrzeniach nazw, które obsługują zapytania LINQ, obejmują metody, które można wywołać w celu tworzenia i uściślenia zapytań na podstawie potrzeb aplikacji. Visual Basic zawiera słowa kluczowe dla następujących typowych klauzul zapytania. Aby uzyskać szczegółowe informacje na temat klauzul zapytań języka Visual Basic, zobacz Zapytania.

Klauzula From

Do rozpoczęcia zapytania jest wymagana klauzula FromAggregate lub klauzula. Klauzula określa From kolekcję źródłową i zmienną iteracji dla zapytania. Na przykład:

' Returns the company name for all customers for which
' the Country is equal to "Canada".
Dim names = From cust In customers
            Where cust.Country = "Canada"
            Select cust.CompanyName

Select — Klauzula

Opcjonalny. Klauzula Select deklaruje zestaw zmiennych iteracji dla zapytania. Na przykład:

' Returns the company name and ID value for each
' customer as a collection of a new anonymous type.
Dim customerList = From cust In customers
                   Select cust.CompanyName, cust.CustomerID

Jeśli klauzula Select nie zostanie określona, zmienne iteracji zapytania składają się ze zmiennych iteracji określonych przez klauzulę From or Aggregate .

Klauzula Where

Opcjonalny. Klauzula określa Where warunek filtrowania zapytania. Na przykład:

' Returns all product names for which the Category of
' the product is "Beverages".
Dim names = From product In products
            Where product.Category = "Beverages"
            Select product.Name

Order By, klauzula

Opcjonalny. Klauzula Order By określa kolejność sortowania kolumn w zapytaniu. Na przykład:

' Returns a list of books sorted by price in 
' ascending order.
Dim titlesAscendingPrice = From b In books
                           Order By b.price

Join — Klauzula

Opcjonalny. Klauzula A Join łączy dwie kolekcje w jedną kolekcję. Na przykład:

' Returns a combined collection of all of the 
' processes currently running and a descriptive
' name for the process taken from a list of 
' descriptive names.
Dim processes = From proc In Process.GetProcesses
                Join desc In processDescriptions
                  On proc.ProcessName Equals desc.ProcessName
                Select proc.ProcessName, proc.Id, desc.Description

Group By — Klauzula

Opcjonalny. Klauzula Group By grupuje elementy wyniku zapytania. Może służyć do stosowania funkcji agregujących do każdej grupy. Na przykład:

' Returns a list of orders grouped by the order date
' and sorted in ascending order by the order date.
Dim orderList = From order In orders
                Order By order.OrderDate
                Group By OrderDate = order.OrderDate
                Into OrdersByDate = Group

Group Join — Klauzula

Opcjonalny. Klauzula łączy Group Join dwie kolekcje w jedną hierarchiczną kolekcję. Na przykład:

' Returns a combined collection of customers and
' customer orders.
Dim customerList = From cust In customers
                   Group Join ord In orders On
                     cust.CustomerID Equals ord.CustomerID
                   Into CustomerOrders = Group,
                        TotalOfOrders = Sum(ord.Amount)
                   Select cust.CompanyName, cust.CustomerID,
                          CustomerOrders, TotalOfOrders

Aggregate — Klauzula

Do rozpoczęcia zapytania jest wymagana klauzula AggregateFrom lub klauzula. Klauzula Aggregate stosuje co najmniej jedną funkcję agregacji do kolekcji. Na przykład możesz użyć klauzuli Aggregate , aby obliczyć sumę dla wszystkich elementów zwracanych przez zapytanie, jak w poniższym przykładzie.

' Returns the sum of all order amounts.
Dim orderTotal = Aggregate order In orders
                 Into Sum(order.Amount)

Możesz również użyć klauzuli Aggregate , aby zmodyfikować zapytanie. Na przykład możesz użyć klauzuli Aggregate , aby wykonać obliczenia w powiązanej kolekcji zapytań. Na przykład:

' Returns the customer company name and largest 
' order amount for each customer.
Dim customerMax = From cust In customers
                  Aggregate order In cust.Orders
                  Into MaxOrder = Max(order.Amount)
                  Select cust.CompanyName, MaxOrder

Let — Klauzula

Opcjonalny. Klauzula Let oblicza wartość i przypisuje ją do nowej zmiennej w zapytaniu. Na przykład:

' Returns a list of products with a calculation of
' a ten percent discount.
Dim discountedProducts = From prod In products
                         Let Discount = prod.UnitPrice * 0.1
                         Where Discount >= 50
                         Select prod.Name, prod.UnitPrice, Discount

Distinct — Klauzula

Opcjonalny. Klauzula Distinct ogranicza wartości bieżącej zmiennej iteracji, aby wyeliminować zduplikowane wartości w wynikach zapytania. Na przykład:

' Returns a list of cities with no duplicate entries.
Dim cities = From item In customers
             Select item.City
             Distinct

Skip — Klauzula

Opcjonalny. Klauzula Skip pomija określoną liczbę elementów w kolekcji, a następnie zwraca pozostałe elementy. Na przykład:

' Returns a list of customers. The first 10 customers
' are ignored and the remaining customers are
' returned.
Dim customerList = From cust In customers
                   Skip 10

Skip While — Klauzula

Opcjonalny. Klauzula Skip While pomija elementy w kolekcji tak długo, jak określony warunek jesttrue, a następnie zwraca pozostałe elementy. Na przykład:

' Returns a list of customers. The query ignores all
' customers until the first customer for whom
' IsSubscriber returns false. That customer and all
' remaining customers are returned.
Dim customerList = From cust In customers
                   Skip While IsSubscriber(cust)

Take — Klauzula

Opcjonalny. Klauzula zwraca Take określoną liczbę ciągłych elementów od początku kolekcji. Na przykład:

' Returns the first 10 customers.
Dim customerList = From cust In customers
                   Take 10

Take While — Klauzula

Opcjonalny. Klauzula Take While zawiera elementy w kolekcji, o ile określony warunek jest true i pomija pozostałe elementy. Na przykład:

' Returns a list of customers. The query returns
' customers until the first customer for whom 
' HasOrders returns false. That customer and all 
' remaining customers are ignored.
Dim customersWithOrders = From cust In customers
                          Order By cust.Orders.Count Descending
                          Take While HasOrders(cust)

Korzystanie z dodatkowych funkcji zapytań LINQ

Możesz użyć dodatkowych funkcji zapytań LINQ, wywołując elementy członkowskie typów wyliczalnych i z możliwością wykonywania zapytań udostępnianych przez LINQ. Możesz użyć tych dodatkowych możliwości, wywołując określony operator zapytania w wyniku wyrażenia zapytania. Na przykład w poniższym przykładzie użyto Enumerable.Union metody , aby połączyć wyniki dwóch zapytań w jeden wynik zapytania. Używa Enumerable.ToList metody , aby zwrócić wynik zapytania jako listę ogólną.

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 na temat dodatkowych funkcji LINQ, zobacz Standardowe operatory zapytań — omówienie.

Połączenie do bazy danych przy użyciu linQ to SQL

W języku Visual Basic identyfikujesz obiekty bazy danych programu SQL Server, takie jak tabele, widoki i procedury składowane, do których chcesz uzyskać dostęp przy użyciu pliku LINQ to SQL. Plik LINQ to SQL ma rozszerzenie .dbml.

Jeśli masz prawidłowe połączenie z bazą danych programu SQL Server, możesz dodać szablon elementu LINQ to SQL Classes do projektu. Spowoduje to wyświetlenie Projektant relacyjnych obiektów (projektantA O/R). Projektant O/R umożliwia przeciąganie elementów, do których chcesz uzyskać dostęp w kodzie z Eksploratora bazy danych Eksploratora/ serwera na powierzchni projektanta. Plik LINQ to SQL dodaje DataContext obiekt do projektu. Ten obiekt zawiera właściwości i kolekcje dla tabel i widoków, do których chcesz uzyskać dostęp, oraz metody procedur składowanych, które chcesz wywołać. Po zapisaniu zmian w pliku LINQ to SQL (dbml) można uzyskać dostęp do tych obiektów w kodzie, odwołując DataContext się do obiektu zdefiniowanego przez Projektant O/R. DataContext Obiekt projektu jest nazwany na podstawie nazwy pliku LINQ to SQL. Na przykład plik LINQ to SQL o nazwie Northwind.dbml utworzy DataContext obiekt o nazwie NorthwindDataContext.

Przykłady z instrukcjami krok po kroku znajdują się w temacie Instrukcje: wykonywanie zapytań dotyczących bazy danych i Instrukcje: wywoływanie procedury składowanej.

Funkcje języka Visual Basic, które obsługują LINQ

Język Visual Basic zawiera inne istotne funkcje, które ułatwiają korzystanie z linQ i zmniejszają ilość kodu, który należy napisać w celu wykonywania zapytań LINQ. Należą do nich następujące funkcje:

  • Typy anonimowe, które umożliwiają utworzenie nowego typu na podstawie wyniku zapytania.

  • Niejawnie wpisane zmienne, które umożliwiają odroczenie określania typu i umożliwienie kompilatorowi wnioskowania typu na podstawie wyniku zapytania.

  • Metody rozszerzeń, które umożliwiają rozszerzenie istniejącego typu przy użyciu własnych metod bez modyfikowania samego typu.

Aby uzyskać szczegółowe informacje, zobacz Visual Basic Features that support LINQ (Funkcje języka Visual Basic, które obsługują linq).

Odroczone i natychmiastowe wykonywanie zapytań

Wykonywanie zapytania jest oddzielone od tworzenia zapytania. Po utworzeniu zapytania jego wykonanie jest wyzwalane przez oddzielny mechanizm. Zapytanie można wykonać natychmiast po zdefiniowaniu (natychmiastowe wykonanie) lub przechowywać definicję, a zapytanie można wykonać później (odroczone wykonanie).

Domyślnie podczas tworzenia zapytania samo zapytanie nie jest wykonywane natychmiast. Zamiast tego definicja zapytania jest przechowywana w zmiennej używanej do odwoływanie się do wyniku zapytania. Gdy zmienna wynikowa zapytania jest uzyskiwana w dalszej części kodu, na przykład w For…Next pętli, zapytanie jest wykonywane. Ten proces jest nazywany odroczonym wykonaniem.

Zapytania można również wykonywać, gdy są zdefiniowane, co jest określane jako natychmiastowe wykonywanie. Natychmiastowe wykonanie można wyzwolić, stosując metodę, która wymaga dostępu do poszczególnych elementów wyniku zapytania. Może to być wynik dołączania funkcji agregującej, takiej jak Count, , AverageSum, Minlub Max. Aby uzyskać więcej informacji na temat funkcji agregujących, zobacz Klauzula agregacji.

ToList Użycie metod lub ToArray spowoduje również wymusi natychmiastowe wykonanie. Może to być przydatne, gdy chcesz natychmiast wykonać zapytanie i zapisać wyniki w pamięci podręcznej. Aby uzyskać więcej informacji na temat tych metod, zobacz Konwertowanie typów danych.

Aby uzyskać więcej informacji na temat wykonywania zapytań, zobacz Pisanie pierwszego zapytania LINQ.

XML w Visual Basic

Funkcje XML w języku Visual Basic obejmują literały XML i właściwości osi XML, które umożliwiają łatwe tworzenie, uzyskiwanie dostępu, wykonywanie zapytań i modyfikowanie kodu XML w kodzie. Literały XML umożliwiają pisanie kodu XML bezpośrednio w kodzie. Kompilator języka Visual Basic traktuje kod XML jako obiekt danych pierwszej klasy.

Poniższy przykład kodu przedstawia sposób tworzenia elementu XML, uzyskiwania dostępu do jego podelementów i atrybutów oraz wykonywania zapytań dotyczących zawartości elementu przy użyciu 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.

Temat opis
XML W tym artykule opisano funkcje XML w języku Visual Basic, których można wykonywać zapytania i które umożliwiają dołączanie kodu XML jako obiektów danych pierwszej klasy w kodzie Visual Basic.
Zapytania Zawiera informacje referencyjne dotyczące klauzul zapytania, które są dostępne w Visual Basic.
LINQ (zapytanie zintegrowane z językiem) Zawiera ogólne informacje, wskazówki dotyczące programowania i przykłady dla LINQ.
LINQ to SQL Zawiera ogólne informacje, wskazówki dotyczące programowania i przykłady dotyczące linQ to SQL.
LINQ to Objects Zawiera ogólne informacje, wskazówki dotyczące programowania i przykłady dla obiektów LINQ to Objects.
LINQ to ADO.NET (strona portalu) Zawiera linki do ogólnych informacji, wskazówek dotyczących programowania i przykładów dla linQ to ADO.NET.
LINQ to XML Zawiera ogólne informacje, wskazówki dotyczące programowania i przykłady dla LINQ to XML.

Instrukcje i tematy z przewodnikami

Instrukcje: wykonywanie zapytań względem bazy danych

Instrukcje: wywoływanie procedury składowanej

Instrukcje: modyfikowanie danych w bazie danych

Instrukcje: łączenie danych ze sprzężeniami

Instrukcje: sortowanie wyników zapytania

Instrukcje: filtrowanie wyników zapytania

Instrukcje: liczba, suma lub średnie dane

Instrukcje: znajdowanie wartości minimalnej lub maksymalnej w wyniku zapytania

Instrukcje: przypisywanie procedur składowanych na potrzeby wykonywania aktualizacji, wstawiania i usuwania (O/R Designer)

Rozdział 17: LINQ in Programming Visual Basic 2008 (Rozdział 17: LINQ in Programming Visual Basic 2008)

Zobacz też