Představení technologie LINQ v jazyce Visual Basic
Jazykově integrovaný dotaz (LINQ) přidává funkce dotazů do jazyka Visual Basic a poskytuje jednoduché a výkonné funkce při práci se všemi druhy dat. Místo odeslání dotazu do databáze, která se má zpracovat, nebo práci s jinou syntaxí dotazu pro každý typ dat, která hledáte, LINQ zavádí dotazy jako součást jazyka Visual Basic. Používá jednotnou syntaxi bez ohledu na typ dat.
LINQ umožňuje dotazovat se na data z databáze SQL Serveru, XML, polí a kolekcí v paměti, ADO.NET datových sad nebo jakéhokoli jiného vzdáleného nebo místního zdroje dat, který podporuje LINQ. To všechno můžete provést pomocí běžných elementů jazyka Visual Basic. Vzhledem k tomu, že dotazy jsou napsané v jazyce Visual Basic, vrátí se výsledky dotazu jako objekty silného typu. Tyto objekty podporují Technologii IntelliSense, která umožňuje psát kód rychleji a zachytit chyby v dotazech v době kompilace místo za běhu. Dotazy LINQ lze použít jako zdroj dalších dotazů k upřesnění výsledků. Mohou být také vázány na ovládací prvky, aby uživatelé mohli snadno zobrazit a upravit výsledky dotazu.
Následující příklad kódu například ukazuje dotaz LINQ, který vrátí seznam zákazníků z kolekce a seskupí je na základě jejich umístění.
' 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
Spuštění příkladů
Pokud chcete spustit příklady v úvodu a v části Struktura dotazu LINQ, uveďte následující kód, který vrací seznamy zákazníků a objednávek.
' 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
Zprostředkovatelé LINQ
Zprostředkovatel LINQ mapuje dotazy JAZYKA LINQ jazyka Visual Basic na dotazovaný zdroj dat. Když napíšete dotaz LINQ, poskytovatel tento dotaz vezme a přeloží ho na příkazy, které bude možné spustit zdroj dat. Zprostředkovatel také převede data ze zdroje na objekty, které tvoří výsledek dotazu. Nakonec při odesílání aktualizací do zdroje dat převede objekty na data.
Visual Basic obsahuje následující zprostředkovatele LINQ.
Poskytovatel | Popis |
---|---|
LINQ na objekty | Zprostředkovatel LINQ to Objects umožňuje dotazovat kolekce a pole v paměti. Pokud objekt podporuje buď objekt, IEnumerable nebo IEnumerable<T> rozhraní, umožňuje zprostředkovatel LINQ to Objects dotazovat. Zprostředkovatele LINQ to Objects můžete povolit importem System.Linq oboru názvů, který se ve výchozím nastavení importuje pro všechny projekty jazyka Visual Basic. Další informace o zprostředkovateli LINQ to Objects naleznete v tématu LINQ to Objects. |
Technologie LINQ to SQL | Zprostředkovatel LINQ to SQL umožňuje dotazovat a upravovat data v databázi SQL Serveru. To usnadňuje mapování objektového modelu aplikace na tabulky a objekty v databázi. Visual Basic usnadňuje práci s LINQ to SQL zahrnutím Návrhář relací objektů (Návrhář relací objektů). Tento návrhář se používá k vytvoření objektového modelu v aplikaci, která se mapuje na objekty v databázi. Návrhář relací poskytuje také funkce pro mapování uložených procedur a funkcí na DataContext objekt, který spravuje komunikaci s databází a ukládá stav pro optimistické kontroly souběžnosti. Další informace o zprostředkovateli LINQ to SQL naleznete v tématu LINQ to SQL. Další informace o Návrhář relací objektů naleznete v tématu LINQ to SQL Tools v sadě Visual Studio. |
LINQ to XML | Zprostředkovatel LINQ to XML umožňuje dotazovat a upravovat XML. Můžete upravit XML v paměti nebo můžete načíst XML ze souboru a uložit ho do souboru. Kromě toho zprostředkovatel LINQ to XML umožňuje literály XML a vlastnosti osy XML, které umožňují psát XML přímo v kódu jazyka Visual Basic. Další informace najdete v tématu XML. |
LINQ to DataSet | Zprostředkovatel LINQ to DataSet umožňuje dotazovat a aktualizovat data v datové sadě ADO.NET. Výkon LINQ můžete přidat do aplikací, které používají datové sady, aby se zjednodušily a rozšířily možnosti pro dotazování, agregaci a aktualizaci dat v datové sadě. Další informace naleznete v tématu LINQ to DataSet. |
Struktura dotazu LINQ
Dotaz LINQ, často označovaný jako výraz dotazu, se skládá z kombinace klauzulí dotazu, které identifikují zdroje dat a proměnné iterace pro dotaz. Výraz dotazu může obsahovat také pokyny pro řazení, filtrování, seskupování a spojování nebo výpočty, které se mají použít u zdrojových dat. Syntaxe výrazů dotazu se podobá syntaxi JAZYKa SQL; proto můžete najít většinu známé syntaxe.
Výraz dotazu začíná klauzulí From
. Tato klauzule identifikuje zdrojová data pro dotaz a proměnné, které slouží k odkazování na jednotlivé prvky zdrojových dat jednotlivě. Tyto proměnné jsou pojmenované proměnné rozsahu nebo iterační proměnné. Klauzule From
se vyžaduje pro dotaz, s výjimkou Aggregate
dotazů, kde From
je klauzule nepovinná. Po určení oboru a zdroje dotazu v From
klauzulích nebo Aggregate
klauzulích můžete zahrnout libovolnou kombinaci klauzulí dotazu, které dotaz zpřesní. Podrobnosti o klauzulích dotazu naleznete v tématu Visual Basic LINQ Query Operators dále v tomto tématu. Například následující dotaz identifikuje zdrojovou kolekci zákaznických dat jako customers
proměnnou a iterační proměnnou s názvem 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
Tento příklad je platným dotazem sám o sobě; Dotaz se ale stává mnohem výkonnější, když přidáte další klauzule dotazu, aby se výsledek zpřesní. Můžete například přidat Where
klauzuli pro filtrování výsledku podle jedné nebo více hodnot. Výrazy dotazu jsou jedním řádkem kódu; Na konec dotazu můžete přidat jenom další klauzule dotazu. Dotaz můžete rozdělit mezi více řádky textu, abyste zlepšili čitelnost pomocí znaku pro pokračování řádku podtržítkem (_). Následující příklad kódu ukazuje příklad dotazu, který obsahuje Where
klauzuli.
Dim queryResults = From cust In customers
Where cust.Country = "Canada"
Další výkonnou klauzulí dotazu je Select
klauzule, která umožňuje vrátit pouze vybraná pole ze zdroje dat. Dotazy LINQ vrací výčtové kolekce objektů silného typu. Dotaz může vrátit kolekci anonymních typů nebo pojmenovaných typů. Klauzuli Select
můžete použít k vrácení pouze jednoho pole ze zdroje dat. Když to uděláte, typ vrácené kolekce je typ tohoto jednoho pole. Klauzuli Select
můžete také použít k vrácení více polí ze zdroje dat. Když to uděláte, typ vrácené kolekce je nový anonymní typ. Pole vrácená dotazem můžete také spárovat s poli zadaného pojmenovaného typu. Následující příklad kódu ukazuje výraz dotazu, který vrací kolekci anonymních typů, které mají členy naplněné daty z vybraných polí ze zdroje dat.
Dim queryResults = From cust In customers
Where cust.Country = "Canada"
Select cust.CompanyName, cust.Country
Dotazy LINQ lze také použít ke kombinování více zdrojů dat a vrácení jednoho výsledku. To lze provést pomocí jedné nebo více From
klauzulí nebo pomocí Join
klauzulí dotazu Group Join
. Následující příklad kódu ukazuje výraz dotazu, který kombinuje data zákazníků a objednávek a vrací kolekci anonymních typů obsahujících data zákazníků a objednávek.
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.
Klauzuli Group Join
můžete použít k vytvoření hierarchického výsledku dotazu, který obsahuje kolekci objektů zákazníka. Každý objekt zákazníka má vlastnost, která obsahuje kolekci všech objednávek pro daného zákazníka. Následující příklad kódu ukazuje výraz dotazu, který kombinuje data zákazníků a objednávek jako hierarchický výsledek a vrací kolekci anonymních typů. Dotaz vrátí typ, který obsahuje CustomerOrders
vlastnost, která obsahuje kolekci dat objednávek pro zákazníka. Obsahuje také OrderTotal
vlastnost, která obsahuje součet součtů pro všechny objednávky daného zákazníka. (Tento dotaz je ekvivalentem LEVÉHO VNĚJŠÍHO SPOJENÍ.)
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
Existuje několik dalších operátorů dotazu LINQ, které můžete použít k vytvoření výkonných výrazů dotazu. Další část tohoto tématu popisuje různé klauzule dotazu, které můžete zahrnout do výrazu dotazu. Podrobnosti o klauzulích dotazu jazyka Visual Basic najdete v tématu Dotazy.
Operátory dotazu LINQ jazyka Visual Basic
Třídy v System.Linq oboru názvů a další obory názvů, které podporují dotazy LINQ, zahrnují metody, které můžete volat k vytváření a upřesňování dotazů na základě potřeb vaší aplikace. Visual Basic obsahuje klíčová slova pro následující běžné klauzule dotazu. Podrobnosti o klauzulích dotazu jazyka Visual Basic najdete v tématu Dotazy.
Klauzule From
From
K zahájení dotazu se vyžaduje klauzule nebo Aggregate
klauzule. From
Klauzule určuje zdrojovou kolekci a proměnnou iterace pro dotaz. Příklad:
' 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 – klauzule
Nepovinné. Select
Klauzule deklaruje sadu proměnných iterace pro dotaz. Příklad:
' 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
Select
Pokud není zadaná klauzule, iterační proměnné pro dotaz se skládají z proměnných iterace určených From
klauzulí nebo Aggregate
klauzulí.
Klauzule Where
Nepovinné. Klauzule Where
určuje podmínku filtrování dotazu. Příklad:
' 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
Klauzule Order By
Nepovinné. Klauzule Order By
určuje pořadí řazení sloupců v dotazu. Příklad:
' Returns a list of books sorted by price in
' ascending order.
Dim titlesAscendingPrice = From b In books
Order By b.price
Join – klauzule
Nepovinné. Join
Klauzule kombinuje dvě kolekce do jedné kolekce. Příklad:
' 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 – klauzule
Nepovinné. Klauzule Group By
seskupí prvky výsledku dotazu. Dá se použít k použití agregačních funkcí pro každou skupinu. Příklad:
' 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 – klauzule
Nepovinné. Group Join
Klauzule kombinuje dvě kolekce do jedné hierarchické kolekce. Příklad:
' 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 – klauzule
Aggregate
K zahájení dotazu se vyžaduje klauzule nebo From
klauzule. Klauzule Aggregate
aplikuje na kolekci jednu nebo více agregačních funkcí. Klauzuli Aggregate
můžete například použít k výpočtu součtu pro všechny prvky vrácené dotazem, jak je znázorněno v následujícím příkladu.
' Returns the sum of all order amounts.
Dim orderTotal = Aggregate order In orders
Into Sum(order.Amount)
Klauzuli Aggregate
můžete také použít k úpravě dotazu. Klauzuli Aggregate
můžete například použít k provedení výpočtu související kolekce dotazů. Příklad:
' 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 – klauzule
Nepovinné. Let
Klauzule vypočítá hodnotu a přiřadí ji k nové proměnné v dotazu. Příklad:
' 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 – klauzule
Nepovinné. Distinct
Klauzule omezuje hodnoty aktuální proměnné iterace tak, aby eliminovaly duplicitní hodnoty ve výsledcích dotazu. Příklad:
' Returns a list of cities with no duplicate entries.
Dim cities = From item In customers
Select item.City
Distinct
Skip – klauzule
Nepovinné. Skip
Klauzule obchází zadaný počet prvků v kolekci a vrátí zbývající prvky. Příklad:
' 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 – klauzule
Nepovinné. Klauzule Skip While
obchází prvky v kolekci, pokud je true
zadaná podmínka a vrátí zbývající prvky. Příklad:
' 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 – klauzule
Nepovinné. Take
Klauzule vrátí zadaný počet souvislých prvků od začátku kolekce. Příklad:
' Returns the first 10 customers.
Dim customerList = From cust In customers
Take 10
Take While – klauzule
Nepovinné. Take While
Klauzule obsahuje prvky v kolekci, pokud je true
zadaná podmínka a obchází zbývající prvky. Příklad:
' 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)
Použití dalších funkcí dotazů LINQ
Další funkce dotazu LINQ můžete použít voláním členů výčtu a dotazovatelných typů poskytovaných LINQ. Tyto další funkce můžete použít voláním konkrétního operátoru dotazu na výsledek výrazu dotazu. Následující příklad například používá metodu Enumerable.Union ke kombinování výsledků dvou dotazů do jednoho výsledku dotazu. Pomocí Enumerable.ToList metody vrátí výsledek dotazu jako obecný seznam.
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
Podrobnosti o dalších funkcích LINQ najdete v tématu Přehled operátorů standardních dotazů.
Připojení do databáze pomocí LINQ to SQL
V jazyce Visual Basic identifikujete databázové objekty SQL Serveru, jako jsou tabulky, zobrazení a uložené procedury, ke kterým chcete získat přístup pomocí souboru LINQ to SQL. Soubor LINQ to SQL má příponu .dbml.
Pokud máte platné připojení k databázi SQL Serveru, můžete do projektu přidat šablonu položky třídy LINQ to SQL . Zobrazí se Návrhář relací objektů (návrhář relací objektů). Návrhář relací umožňuje přetáhnout položky, ke kterým chcete získat přístup v kódu z Průzkumníka databáze serveru/, na plochu návrháře. Soubor LINQ to SQL přidá DataContext do projektu objekt. Tento objekt obsahuje vlastnosti a kolekce pro tabulky a zobrazení, ke kterým chcete získat přístup, a metody pro uložené procedury, které chcete volat. Po uložení změn v souboru LINQ to SQL (.dbml) můžete k těmto objektům přistupovat ve svém kódu odkazováním DataContext na objekt definovaný návrhářem relací objektů. Objekt DataContext pro váš projekt se jmenuje na základě názvu souboru LINQ to SQL. Například soubor LINQ to SQL s názvem Northwind.dbml vytvoří DataContext objekt s názvem NorthwindDataContext
.
Příklady s podrobnými pokyny najdete v tématu Postupy: Dotazování databáze a postupy: Volání uložené procedury.
Funkce jazyka Visual Basic, které podporují LINQ
Visual Basic obsahuje další nejdůležitější funkce, které usnadňují použití LINQ a snižují množství kódu, který musíte napsat k provádění dotazů LINQ. Patří mezi ně následující:
Anonymní typy, které umožňují vytvořit nový typ na základě výsledku dotazu.
Implicitně zadané proměnné, které umožňují odložit zadání typu a nechat kompilátor odvodit typ na základě výsledku dotazu.
Rozšiřující metody, které umožňují rozšířit existující typ vlastními metodami beze změny samotného typu.
Podrobnosti najdete v tématu Funkce jazyka Visual Basic, které podporují LINQ.
Odložené a okamžité spuštění dotazu
Provádění dotazu je oddělené od vytvoření dotazu. Po vytvoření dotazu se jeho spuštění aktivuje samostatným mechanismem. Dotaz lze spustit hned, jak je definován (okamžité spuštění), nebo lze definici uložit a dotaz lze spustit později (odložené spuštění).
Ve výchozím nastavení se při vytváření dotazu samotný dotaz nespustí okamžitě. Místo toho se definice dotazu uloží do proměnné, která slouží k odkazování na výsledek dotazu. Když se proměnná výsledku dotazu později v kódu, například ve For…Next
smyčce, otevře se dotaz. Tento proces se označuje jako odložené spuštění.
Dotazy lze provést také při jejich definování, což se označuje jako okamžité spuštění. Okamžité spuštění můžete aktivovat použitím metody, která vyžaduje přístup k jednotlivým prvkům výsledku dotazu. Může to být výsledek zahrnutí agregační funkce, například Count
, Sum
, Average
, Min
nebo Max
. Další informace o agregačních funkcích najdete v tématu Agregační klauzule.
ToList
Použití metod nebo ToArray
metod také vynutí okamžité spuštění. To může být užitečné, když chcete dotaz spustit okamžitě a uložit výsledky do mezipaměti. Další informace o těchto metodách naleznete v tématu Převod datových typů.
Další informace o provádění dotazů naleznete v tématu Zápis prvního dotazu LINQ.
XML v jazyce Visual Basic
Funkce XML v jazyce Visual Basic zahrnují literály XML a vlastnosti osy XML, které umožňují snadno vytvářet, přistupovat k nim, dotazovat a upravovat XML ve vašem kódu. Literály XML umožňují psát XML přímo do kódu. Kompilátor jazyka Visual Basic považuje XML za objekt dat první třídy.
Následující příklad kódu ukazuje, jak vytvořit xml element, získat přístup k jeho dílčí prvky a atributy a dotazovat obsah elementu 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
Další informace najdete v tématu XML.
Související prostředky
Téma | Popis |
---|---|
XML | Popisuje funkce XML v jazyce Visual Basic, které lze dotazovat a které umožňují zahrnout XML jako prvotřídní datové objekty do kódu jazyka Visual Basic. |
Dotazy | Poskytuje referenční informace o klauzulích dotazu, které jsou k dispozici v jazyce Visual Basic. |
LINQ (jazykově integrovaný dotaz) | Obsahuje obecné informace, pokyny k programování a ukázky pro LINQ. |
LINQ to SQL | Obsahuje obecné informace, pokyny k programování a ukázky pro LINQ to SQL. |
LINQ to Objects | Obsahuje obecné informace, pokyny k programování a ukázky pro LINQ to Objects. |
LINQ to ADO.NET (stránka portálu) | Obsahuje odkazy na obecné informace, pokyny k programování a ukázky pro LINQ to ADO.NET. |
LINQ to XML | Obsahuje obecné informace, pokyny k programování a ukázky pro LINQ to XML. |
Postupy a názorná témata
Postupy: Volání uložené procedury
Postupy: Úprava dat v databázi
Postupy: Kombinování dat s spojeními
Postupy: Řazení výsledků dotazu
Postupy: Filtrování výsledků dotazu
Postupy: Počet, součet nebo průměr dat
Postupy: Vyhledání minimální nebo maximální hodnoty ve výsledku dotazu
Doporučené kapitoly knihy
Kapitola 17: LINQ in Programming Visual Basic 2008