Záradék kiválasztása (Visual Basic)
Egy lekérdezés eredményét határozza meg.
Syntax
Select [ var1 = ] fieldName1 [, [ var2 = ] fieldName2 [...] ]
Részek
var1
Opcionális. Az oszlopkifejezés eredményeire hivatkozó alias.
fieldName1
Szükséges. A lekérdezés eredményében visszaadandó mező neve.
Megjegyzések
A Select
záradék használatával definiálhatja a lekérdezésből való visszatéréshez használt eredményeket. Ez lehetővé teszi egy lekérdezés által létrehozott új névtelen típus tagjainak definiálását, vagy egy lekérdezés által visszaadott névvel ellátott típus tagjainak megcélzását. A Select
záradék nem szükséges egy lekérdezéshez. Ha nincs Select
megadva záradék, a lekérdezés egy típust ad vissza az aktuális hatókörhöz azonosított tartományváltozók összes tagja alapján. További információ: Névtelen típusok. Ha egy lekérdezés névvel ellátott típust hoz létre, az eredmény egy olyan típus IEnumerable<T> eredménye lesz, ahol T
a létrehozott típus található.
A Select
záradék hivatkozhat az aktuális hatókörben lévő változókra. Ide tartoznak a From
záradékban (vagy From
záradékokban) azonosított tartományváltozók. A lekérdezési kifejezés egy korábbi záradékából származó aliassal Aggregate
Group Join
Let
Group By
létrehozott új változókat is tartalmazza.Select
A Select
záradék statikus értékeket is tartalmazhat. Az alábbi példakód például egy lekérdezési kifejezést mutat be, amelyben a Select
záradék egy új névtelen típusként határozza meg a lekérdezés eredményét négy taggal: ProductName
, Price
, Discount
és DiscountedPrice
. Price
A ProductName
rendszer a záradékban meghatározott terméktartomány-változóból veszi át a From
tagértékeket. A DiscountedPrice
tagérték kiszámítása a Let
záradékban történik. A Discount
tag statikus érték.
' 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
A Select
záradék új tartományváltozókat vezet be a későbbi lekérdezési záradékokhoz, és a korábbi tartományváltozók már nem tartoznak a hatókörbe. A lekérdezési kifejezés utolsó Select
záradéka határozza meg a lekérdezés visszatérési értékét. Az alábbi lekérdezés például minden olyan ügyfélrendelés cégnevét és rendelésazonosítóját adja vissza, amelynek összege meghaladja az 500-t. Az első Select
záradék a záradék és a Where
második Select
záradék tartományváltozóit azonosítja. A második Select
záradék új névtelen típusként azonosítja a lekérdezés által visszaadott értékeket.
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
Ha a Select
záradék egyetlen visszaadandó elemet azonosít, a lekérdezési kifejezés az adott elem típusának gyűjteményét adja vissza. Ha a Select
záradék több visszaadandó elemet azonosít, a lekérdezési kifejezés egy új névtelen típusú gyűjteményt ad vissza a kiválasztott elemek alapján. Az alábbi két lekérdezés például két különböző típusú gyűjteményt ad vissza a Select
záradék alapján. Az első lekérdezés sztringekként adja vissza a cégnevek gyűjteményét. A második lekérdezés a cégnevekkel és címadatokkal kitöltött objektumok gyűjteményét Customer
adja vissza.
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élda
Az alábbi lekérdezési kifejezés egy záradékkal From
deklarál egy tartományváltozót cust
a customers
gyűjteményhez. A Select
záradék kiválasztja az ügyfél nevét és azonosítóját, és feltölti az CompanyName
új tartományváltozó oszlopait és CustomerID
oszlopait. Az For Each
utasítás az egyes visszaadott objektumok fölé hurkol, és megjeleníti az CompanyName
egyes rekordok oszlopait és CustomerID
oszlopait.
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