Select-Klausel (Visual Basic)
Definiert das Ergebnis einer Abfrage.
Syntax
Select [ var1 = ] fieldName1 [, [ var2 = ] fieldName2 [...] ]
Bestandteile
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.
Bemerkungen
Sie können die Select
-Klausel verwenden, um die Ergebnisse zu definieren, die von einer Abfrage zurückgegeben werden sollen. Dadurch können Sie entweder die Member eines neuen anonymen Typs definieren, der von einer Abfrage erstellt wird, oder die Member eines benannten Typs als Ziel festlegen, der von einer Abfrage zurückgegeben wird. Die Select
-Klausel ist für eine Abfrage nicht erforderlich. Wenn keine Select
Klausel angegeben ist, gibt die Abfrage einen Typ zurück, der auf allen Membern der Bereichsvariablen basiert, die für den aktuellen Bereich identifiziert wurden. Weitere Informationen finden Sie unter Anonyme Typen. Wenn eine Abfrage einen benannten Typ erstellt, gibt sie ein Ergebnis des Typs IEnumerable<T> zurück, wobei T
der erstellte Typ ist.
Die Select
-Klausel kann auf alle Variablen im aktuellen Bereich verweisen. Dies schließt Bereichsvariablen ein, die in der -Klausel (oder From
-From
Klauseln) identifiziert wurden. Es enthält auch alle neuen Variablen, die mit einem Alias durch die Aggregate
- , Let
- Group By
oder Group Join
-Klauseln oder Variablen aus einer vorherigen Select
Klausel im Abfrageausdruck erstellt wurden. Die Select
-Klausel kann auch statische Werte enthalten. Das folgende Codebeispiel zeigt beispielsweise einen Abfrageausdruck, in dem die Select
-Klausel das Abfrageergebnis als neuen anonymen Typ mit vier Membern definiert: ProductName
, Price
, , Discount
und DiscountedPrice
. Die ProductName
Memberwerte und Price
werden aus der Produktbereichsvariablen entnommen, die in der From
-Klausel definiert ist. Der DiscountedPrice
Memberwert wird in der Let
-Klausel berechnet. Das Discount
Element 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, und frühere Bereichsvariablen befinden sich nicht mehr im Bereich. Die letzte Select
Klausel in einem Abfrageausdruck bestimmt den Rückgabewert der Abfrage. Die folgende Abfrage gibt beispielsweise den Firmennamen und die Auftrags-ID für jeden Kundenauftrag zurück, für den die Gesamtsumme 500 überschreitet. Die erste Select
Klausel identifiziert die Bereichsvariablen für die Where
Klausel und die zweite Select
Klausel. Die zweite Select
Klausel identifiziert die von der Abfrage zurückgegebenen Werte als neuen anonymen 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
Wenn die Select
-Klausel ein einzelnes element identifiziert, das zurückgegeben werden soll, gibt der Abfrageausdruck eine Auflistung des Typs dieses einzelnen Elements zurück. Wenn die Select
-Klausel mehrere zurückzugebende Elemente identifiziert, gibt der Abfrageausdruck basierend auf den ausgewählten Elementen eine Auflistung eines neuen anonymen Typs zurück. Die folgenden beiden Abfragen geben beispielsweise Sammlungen von zwei verschiedenen Typen basierend auf der Select
-Klausel zurück. Die erste Abfrage gibt eine Auflistung von Firmennamen als Zeichenfolgen zurück. Die zweite Abfrage gibt eine Auflistung von Customer
Objekten zurück, die mit den Firmennamen und Adressinformationen aufgefüllt sind.
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, um eine Bereichsvariable cust
für die customers
Auflistung zu deklarieren. Die Select
-Klausel wählt den Kundennamen und den ID-Wert aus und füllt die CompanyName
Spalten und CustomerID
der neuen Bereichsvariable auf. Die For Each
-Anweisung führt Schleifen über jedes zurückgegebene Objekt und zeigt die CompanyName
Spalten und CustomerID
für jeden Datensatz 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