Freigeben über


Select-Klausel (Visual Basic)

Definiert das Ergebnis einer Abfrage.

Syntax

Select [ var1 = ] fieldName1 [, [ var2 = ] fieldName2 [...] ]  

Bestandteile

var1
Wahlfrei. 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. Auf diese Weise können Sie entweder die Member eines neuen anonymen Typs definieren, der von einer Abfrage erstellt wird, oder die Member eines benannten Typs, 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 basierend auf allen Elementen der Bereichsvariablen zurück, 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, in T dem der erstellte Typ ist.

Die Select Klausel kann auf alle Variablen im aktuellen Bereich verweisen. Dazu gehören Bereichsvariablen, die in der From Klausel (oder From Klauseln) identifiziert werden. Sie 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 z. B. einen Abfrageausdruck, in dem die Select Klausel das Abfrageergebnis als neuen anonymen Typ mit vier Membern definiert: ProductName, , Price, Discountund DiscountedPrice. Die ProductName Werte und Price Memberwerte stammen aus der Produktbereichsvariable, 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 Summe 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 eine Auflistung eines neuen anonymen Typs basierend auf den ausgewählten Elementen zurück. Die folgenden beiden Abfragen geben beispielsweise Auflistungen 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 werden.

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 CustomerID der neuen Bereichsvariable auf. Die For Each Anweisung durchläuft jedes zurückgegebene Objekt und zeigt die und CustomerID die CompanyName Spalten 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

Siehe auch