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 -FromKlauseln) identifiziert wurden. Es enthält auch alle neuen Variablen, die mit einem Alias durch die Aggregate- , Let- Group Byoder 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, , Discountund 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

Weitere Informationen