Megosztás a következőn keresztül:


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 AggregateGroup JoinLetGroup Bylé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

Lásd még