Představení technologie LINQ v jazyce Visual Basic
Language-Integrated Dotaz (LINQ) přidává možnosti dotazů do Visual Basic a poskytuje jednoduché a výkonné funkce, když pracujete 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 Server, 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. Můžete to udělat s běžnými prvky jazyka Visual Basic. Vzhledem k tomu, že dotazy jsou napsané v jazyce Visual Basic, vrátí se výsledky dotazu jako objekty se silnými typy. 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ý vrací seznam zákazníků z kolekce a seskupuje 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
Poskytovatel LINQ mapuje Visual Basic dotazy LINQ na dotazovaný zdroj dat. Když napíšete dotaz LINQ, poskytovatel ho vezme a přeloží ho na příkazy, které bude moci zdroj dat spustit. Zprostředkovatel také převede data ze zdroje na objekty, které tvoří výsledek dotazu. Nakonec převede objekty na data při odesílání aktualizací do zdroje dat.
Visual Basic zahrnuje následující poskytovatele LINQ.
Poskytovatel | Description |
---|---|
LINQ na objekty | Poskytovatel LINQ to Objects umožňuje dotazovat se na kolekce a pole v paměti. Pokud objekt podporuje buď objektIEnumerable, nebo IEnumerable<T> rozhraní, poskytovatel LINQ to Objects vám umožní dotazovat se na něj. Poskytovatele LINQ to Objects můžete povolit importem System.Linq oboru názvů, který se ve výchozím nastavení importuje pro všechny projekty Visual Basic. Další informace o poskytovateli LINQ to Objects najdete v tématu LINQ to Objects. |
Technologie LINQ to SQL | Poskytovatel LINQ to SQL umožňuje dotazovat a upravovat data v databázi SQL Server. 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áře Návrhář relací objektů (O/R Designer). 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 poskytovateli LINQ to SQL najdete v tématu LINQ to SQL. Další informace o Návrhář relací objektů najdete v tématu nástroje LINQ to SQL v Visual Studio. |
Technologie LINQ to XML | Zprostředkovatel LINQ to XML umožňuje dotazovat a upravovat XML. Kód XML v paměti můžete upravit 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 do kódu Visual Basic. Další informace najdete v tématu XML. |
LINQ na DataSet | Poskytovatel 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 najdete v tématu LINQ to DataSet. |
Struktura dotazu LINQ
Dotaz LINQ, který se často označuje jako výraz dotazu, se skládá z kombinace klauzulí dotazu, které identifikují zdroje dat a proměnné iterace dotazu. Výraz dotazu může obsahovat také pokyny pro řazení, filtrování, seskupení a spojování nebo výpočty, které se mají použít u zdrojových dat. Syntaxe výrazu dotazu se podobá syntaxi SQL; proto můžete najít velkou část syntaxe známé.
Výraz dotazu začíná klauzulí From
. Tato klauzule identifikuje zdrojová data pro dotaz a proměnné, které se používají k odkazování na jednotlivé prvky zdrojových dat jednotlivě. Tyto proměnné jsou pojmenované proměnné rozsahu nebo proměnné iterace. Klauzule From
se vyžaduje pro dotaz, s výjimkou Aggregate
dotazů, kde From
je klauzule nepovinná. Jakmile se obor a zdroj dotazu identifikují v From
klauzulích nebo Aggregate
klauzulích, můžete zahrnout libovolnou kombinaci klauzulí dotazu, které dotaz zpřesní. Podrobnosti o klauzulích dotazu najdete 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 pouze připojit další klauzule dotazu. Dotaz můžete rozdělit na více řádků textu, abyste zlepšili čitelnost pomocí znaku pro pokračování řádku podtržítka (_). 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ší silnou klauzulí dotazu je Select
klauzule, která umožňuje vracet 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 jediného pole. Klauzuli Select
můžete použít také 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 použít také ke kombinování více zdrojů dat a vrácení jednoho výsledku. Můžete to provést pomocí jedné nebo více From
klauzulí nebo pomocí Join
Group Join
klauzulí dotazu. 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íka a objednávky.
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í výsledku hierarchického 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. Zahrnuje 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 Visual Basic najdete v tématu Dotazy.
Visual Basic operátory dotazů LINQ
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řesně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 Visual Basic najdete v tématu Dotazy.
Klauzule From
K zahájení dotazu se vyžaduje klauzule nebo Aggregate
klauzuleFrom
. 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ý parametr. 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, proměnné iterace pro dotaz se skládají z proměnných iterace určených klauzulí From
nebo Aggregate
klauzulí.
Klauzule Where
Nepovinný parametr. Where
Klauzule 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ý parametr. KlauzuleOrder 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ý parametr. Klauzule AJoin
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ý parametr. Group By
Klauzule 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ý parametr. Klauzule AGroup Join
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
K zahájení dotazu se vyžaduje klauzule nebo From
klauzuleAggregate
. 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ý parametr. Let
Klauzule vypočítá hodnotu a přiřadí ji 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ý parametr. 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ý parametr. Skip
Klauzule obchází zadaný počet prvků v kolekci a potom 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ý parametr. Skip While
Klauzule 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ý parametr. Klauzule ATake
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ý parametr. 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ů, které poskytuje LINQ. Tyto další funkce můžete použít voláním konkrétního operátoru dotazu na výsledek výrazu dotazu. Například následující příklad používá metodu Enumerable.Union ke kombinování výsledků dvou dotazů do jednoho výsledku dotazu. Používá metodu Enumerable.ToList k vrácení výsledku dotazu jako obecného seznamu.
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 standardních operátorů dotazů.
Připojení do databáze pomocí LINQ to SQL
V Visual Basic identifikujete SQL Server databázové objekty, 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 Server, můžete do projektu přidat šablonu položky LINQ to SQL Třídy. Zobrazí se Návrhář relací objektů (návrhář relací relací). Návrhář relací umožňuje přetáhnout položky, ke kterým chcete přistupovat v kódu z Průzkumníka serveru ExplorerDatabase Explorer/ na plochu návrháře. Soubor LINQ to SQL přidá DataContext objekt do projektu. 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 do souboru LINQ to SQL (.dbml) můžete k těmto objektům v kódu přistupovat odkazem DataContext na objekt definovaný Návrhářem relací objektů. Objekt DataContext projektu je pojmenovaný 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.
Visual Basic funkce, které podporují LINQ
Visual Basic zahrnuje další funkce, které usnadňují použití LINQ a snižují množství kódu, který musíte napsat, aby bylo možné provádět dotazy LINQ. Mezi ně patří:
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.
Metody rozšíření, které umožňují rozšířit existující typ vlastními metodami beze změny samotného typu.
Podrobnosti najdete v tématu Visual Basic funkce, 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 je definice dotazu uložena v proměnné, která se používá k odkazování na výsledek dotazu. Pokud se k proměnné výsledku dotazu dostanete později v kódu, například ve For…Next
smyčce, dotaz se spustí. Tento proces se označuje jako odložené spuštění.
Dotazy je možné 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 naleznete v tématu Agregační klauzule.
Použití nebo ToList
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 Visual Basic zahrnují literály XML a vlastnosti osy XML, které umožňují snadno vytvářet, přistupovat, dotazovat a upravovat XML v kódu. Literály XML umožňují psát XML přímo do kódu. Kompilátor Visual Basic zachází s XML jako s datovým objektem první třídy.
Následující příklad kódu ukazuje, jak vytvořit element XML, získat přístup k jeho dílčím prvkům a atributům 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 | Description |
---|---|
XML | Popisuje funkce XML v Visual Basic, které lze dotazovat a které umožňují zahrnout XML jako datové objekty první třídy do kódu Visual Basic. |
Dotazy | Poskytuje referenční informace o klauzulích dotazu, které jsou k dispozici v Visual Basic. |
LINQ (jazykově integrovaný dotaz) | Obsahuje obecné informace, pokyny k programování a ukázky pro LINQ. |
Technologie LINQ to SQL | Obsahuje obecné informace, pokyny k programování a ukázky pro LINQ to SQL. |
LINQ na objekty | 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. |
Technologie 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 v programování Visual Basic 2008