Select – klauzule (Visual Basic)
Definuje výsledek dotazu.
Syntaxe
Select [ var1 = ] fieldName1 [, [ var2 = ] fieldName2 [...] ]
Součástky
var1
Nepovinné. Alias, který lze použít k odkazování na výsledky výrazu sloupce.
fieldName1
Povinný: Název pole, které se má vrátit ve výsledku dotazu.
Poznámky
Klauzuli Select
můžete použít k definování výsledků, které se mají vrátit z dotazu. To umožňuje definovat členy nového anonymního typu, který je vytvořen dotazem, nebo cílit na členy pojmenovaného typu vráceného dotazem. Klauzule Select
není vyžadována pro dotaz. Pokud není zadaná žádná Select
klauzule, dotaz vrátí typ na základě všech členů proměnných rozsahu identifikovaných pro aktuální obor. Další informace naleznete v tématu Anonymní typy. Když dotaz vytvoří pojmenovaný typ, vrátí výsledek typu IEnumerable<T> , kde T
je vytvořený typ.
Klauzule Select
může odkazovat na libovolné proměnné v aktuálním oboru. To zahrnuje proměnné rozsahu From
identifikované v klauzuli (nebo From
klauzulích). Zahrnuje také všechny nové proměnné vytvořené pomocí aliasu pomocí Aggregate
klauzulí , Let
, Group By
, nebo Group Join
klauzulí nebo proměnných z předchozí Select
klauzule ve výrazu dotazu. Klauzule Select
může také obsahovat statické hodnoty. Například následující příklad kódu ukazuje výraz dotazu, ve kterém Select
klauzule definuje výsledek dotazu jako nový anonymní typ se čtyřmi členy: ProductName
, Price
, Discount
a DiscountedPrice
. Price
Hodnoty ProductName
členů jsou převzaty z proměnné rozsahu produktů, která je definována From
v klauzuli. Hodnota DiscountedPrice
člena se vypočítá v klauzuli Let
. Člen Discount
je statická hodnota.
' 10% discount
Dim discount_10 = 0.1
Dim priceList =
From product In products
Let DiscountedPrice = product.UnitPrice * (1 - discount_10)
Select product.ProductName, Price = product.UnitPrice,
Discount = discount_10, DiscountedPrice
Klauzule Select
zavádí novou sadu proměnných rozsahu pro následné klauzule dotazu a předchozí proměnné rozsahu již nejsou v oboru. Poslední Select
klauzule ve výrazu dotazu určuje návratovou hodnotu dotazu. Následující dotaz například vrátí název společnosti a ID objednávky pro každou objednávku zákazníka, pro kterou celkový součet překročí 500. První Select
klauzule identifikuje proměnné rozsahu pro Where
klauzuli a druhou Select
klauzuli. Druhá Select
klauzule identifikuje hodnoty vrácené dotazem jako nový anonymní typ.
Dim customerList = From cust In customers, ord In cust.Orders
Select Name = cust.CompanyName,
Total = ord.Total, ord.OrderID
Where Total > 500
Select Name, OrderID
Select
Pokud klauzule identifikuje jednu položku, která se má vrátit, výraz dotazu vrátí kolekci typu dané položky. Select
Pokud klauzule identifikuje více položek, které se mají vrátit, vrátí výraz dotazu kolekci nového anonymního typu na základě vybraných položek. Například následující dva dotazy vrací kolekce dvou různých typů na Select
základě klauzule. První dotaz vrátí kolekci názvů společností jako řetězce. Druhý dotaz vrátí kolekci Customer
objektů naplněných názvy a informacemi o adrese společnosti.
Dim customerNames = From cust In customers
Select cust.CompanyName
Dim customerInfo As IEnumerable(Of Customer) =
From cust In customers
Select New Customer With {.CompanyName = cust.CompanyName,
.Address = cust.Address,
.City = cust.City,
.Region = cust.Region,
.Country = cust.Country}
Příklad
Následující výraz dotazu používá From
klauzuli k deklaraci proměnné cust
rozsahu pro kolekci customers
. Klauzule Select
vybere název zákazníka a hodnotu ID a naplní CompanyName
CustomerID
sloupce nové proměnné rozsahu. Příkaz For Each
smyčky přes každý vrácený objekt a zobrazí CompanyName
sloupce CustomerID
pro každý záznam.
Sub SelectCustomerNameAndId(ByVal customers() As Customer)
Dim nameIds = From cust In customers
Select cust.CompanyName, cust.CustomerID
For Each nameId In nameIds
Console.WriteLine(nameId.CompanyName & ": " & nameId.CustomerID)
Next
End Sub