Select-Klausel (Visual Basic)
Definiert das Ergebnis einer Abfrage.
Select [ var1 = ] fieldName1 [, [ var2 = ] fieldName2 [...] ]
Teile
var1
Optional. Ein Alias, der verwendet werden kann, um auf die Ergebnisse des Spaltenausdrucks zu verweisen.fieldName1
Erforderlich. Der Name des Felds, das im Abfrageergebnis zurückgegeben werden soll.
Hinweise
Mit der Select-Klausel können Sie die Ergebnisse definieren, die in einer Abfrage zurückgegeben werden sollen. Dadurch können Sie die Member eines neuen anonymen Typs definieren, der von einer Abfrage erstellt wird, oder auf die Member eines benannten Typs zugreifen, der von einer Abfrage zurückgegeben wird. Eine Abfrage muss keine Select-Klausel enthalten. Wenn Sie keine Select-Klausel angeben, wird von der Abfrage ein Typ auf Grundlage aller Member der Bereichsvariablen zurückgegeben, die für den aktuellen Bereich angegeben wurden. Weitere Informationen finden Sie unter Anonyme Typen (Visual Basic). Wenn eine Abfrage einen benannten Typ erstellt, wird ein Ergebnis des Typs IEnumerable zurückgegeben. Dabei ist T der erstellte Typ.
Die Select-Klausel kann auf alle Variablen des aktuellen Bereichs verweisen. Hierzu gehören die in der From-Klausel (oder den From-Klauseln) angegebenen Bereichsvariablen. Weiterhin gehören hierzu alle neuen, in der Aggregate-Klausel, der Let-Klausel, der Group By-Klausel oder der Group Join-Klausel mit einem Alias erstellten Variablen, sowie die Variablen einer im Abfrageausdruck vorangestellten Select-Klausel. Die Select-Klausel kann auch statische Werte enthalten. Beispielsweise enthält das folgende Codebeispiel einen Abfrageausdruck, in dem die Select-Klausel das Abfrageergebnis als einen neuen anonymen Typ mit den vier Membern ProductName, Price, Discount und DiscountedPrice definiert. Die Werte für den ProductName-Member und den Price-Member werden aus der Bereichsvariablen product übernommen, die in der From-Klausel definiert wird. Der Wert für den DiscountedPrice-Member wird in der Let-Klausel berechnet. Der Discount-Member ist ein statischer Wert.
' 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
Die Select-Klausel führt einen neuen Satz von Bereichsvariablen für nachfolgende Abfrageklauseln ein. Die vorherigen Bereichsvariablen befinden sich nicht mehr im Gültigkeitsbereich. Die letzte Select-Klausel in einem Abfrageausdruck legt den Rückgabewert der Abfrage fest. Beispielsweise werden in der folgenden Abfrage für jede Kundenbestellung, deren Gesamtsumme größer als 500 ist, der Firmenname und die Auftrags-ID zurückgegeben. Die erste Select-Klausel gibt die Bereichsvariablen für die Where-Klausel und die zweite Select-Klausel an. Die zweite Select-Klausel gibt die von der Abfrage zurückgegebenen Werte als neuen anonymen Typ an.
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
Wenn die Select-Klausel ein einzelnes zurückzugebendes Element angibt, wird vom Abfrageausdruck eine Auflistung des Typs dieses einzelnen Elements zurückgegeben. Wenn die Select-Klausel mehrere zurückzugebende Elemente angibt, wird vom Abfrageausdruck eine Auflistung eines neuen anonymen Typs zurückgegeben, der auf den ausgewählten Elementen basiert. Beispielsweise geben die beiden folgenden Abfragen auf Grundlage der Select-Klausel Auflistungen von zwei verschiedenen Typen zurück. Die erste Abfrage gibt eine Auflistung von Firmennamen als Zeichenfolgen zurück. Die zweite Abfrage gibt eine Auflistung von Customer-Objekten mit den entsprechenden Firmennamen und Adressinformationen zurück.
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}
Beispiel
Der folgende Abfrageausdruck verwendet eine From-Klausel zum Deklarieren einer Bereichsvariablen cust für die customers-Auflistung. Mit der Select-Klausel werden der Kundenname und die ID ausgewählt und die CompanyName-Spalte sowie die CustomerID-Spalte der neuen Bereichsvariablen gefüllt. Die For Each-Anweisung durchläuft alle zurückgegebenen Objekte und zeigt für jeden Datensatz die CompanyName-Spalte und die CustomerID-Spalte an.
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
Siehe auch
Referenz
ORDER BY-Klausel (Visual Basic)
Konzepte
Einführung in LINQ in Visual Basic