Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Definuje výsledek dotazu.
Syntaxe
Select [ var1 = ] fieldName1 [, [ var2 = ] fieldName2 [...] ]
Součástky
var1
Volitelný. 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í Aggregateklauzulí , 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, Discounta 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í CompanyNameCustomerID 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