From-Klausel (Visual Basic)

Gibt eine oder mehrere Bereichsvariablen und eine Sammlung an, die abfragt werden soll

Syntax

From element [ As type ] In collection [ _ ]  
  [, element2 [ As type2 ] In collection2 [, ... ] ]  

Bestandteile

Begriff Definition
element Erforderlich. Eine Bereichsvariable für die Iteration durch die Elemente der Sammlung. Eine Bereichsvariable wird verwendet, um auf jedes Element des collection zu verweisen, während die Abfrage die collection durchläuft. Muss ein Enumerationstyp sein
type Optional. Der element-Typ. Wenn kein type angegeben ist, wird der Typ von element aus der collection abgeleitet.
collection Erforderlich. Gibt die Sammlung an, die abgefragt werden soll. Muss ein Enumerationstyp sein

Bemerkungen

Die From-Klausel wird zum Identifizieren der Quelldaten für eine Abfrage und der Variablen verwendet, die zum Verweisen auf ein Element aus der Quellsammlung genutzt werden. Diese Variablen werden Bereichsvariablen genannt. Die From-Klausel ist für eine Abfrage erforderlich, es sei denn, die Aggregate-Klausel zum Identifizieren einer Abfrage verwendet wird, die nur aggregierte Ergebnisse zurückgibt. Weitere Informationen finden Sie unter Aggregate-Klausel.

Sie können mehrere From-Klauseln in einer Abfrage angeben, um mehrere zu verknüpfende Sammlungen zu identifizieren. Wenn mehrere Sammlungen angegeben werden, werden sie unabhängig durchlaufen, oder Sie können sie verknüpfen, wenn sie einen Zusammenhang aufweisen. Sie können Sammlungen implizit mithilfe der Select-Klausel oder explizit mithilfe der Join-Klausel oder der Group Join-Klausel verknüpfen. Alternativ können Sie mehrere Bereichsvariablen und Sammlungen in einer einzelnen From-Klausel angeben, wobei jede verwandte Bereichsvariable und Sammlung von den anderen durch ein Komma getrennt ist. Das folgende Codebeispiel zeigt beide Syntaxoptionen für die From-Klausel.

' Multiple From clauses in a query.
Dim result = From var1 In collection1, var2 In collection2

' Equivalent syntax with a single From clause.
Dim result2 = From var1 In collection1
              From var2 In collection2

Die From-Klausel definiert den Bereich einer Abfrage, der dem Bereich einer For-Schleife ähnelt. Daher muss jede Bereichsvariable für element im Bereich einer Abfrage einen eindeutigen Namen haben. Da Sie mehrere From-Klauseln für eine Abfrage angeben können, können nachfolgende From-Klauseln auf Bereichsvariablen in der From-Klausel oder einer vorherigen From-Klausel verweisen. Das folgende Beispiel zeigt eine geschachtelte From-Klausel, bei der die Sammlung in der zweiten Klausel auf einer Eigenschaft der Bereichsvariablen in der ersten Klausel basiert.

Dim allOrders = From cust In GetCustomerList()
                From ord In cust.Orders
                Select ord

Auf jede From-Klausel kann eine beliebige Kombination zusätzlicher Abfrageklauseln folgen, um die Abfrage zu verfeinern. Zum Verfeinern der Abfrage stehen Ihnen folgende Methoden zur Verfügung:

  • Kombinieren Sie implizit mehrere Sammlungen mithilfe der From- und Select-Klauseln oder explizit mithilfe der Join- oder Group Join-Klauseln.

  • Verwenden Sie die Where-Klausel, um das Abfrageergebnis zu filtern.

  • Sortieren Sie das Ergebnis mithilfe der Order By-Klausel.

  • Gruppieren Sie ähnliche Ergebnisse mithilfe der Group By-Klausel.

  • Verwenden Sie die Aggregate-Klausel zum Identifizieren von Aggregatfunktionen, die für das gesamte Abfrageergebnis ausgewertet werden sollen.

  • Verwenden Sie die Let-Klausel, um eine Iterationsvariable einzuführen, deren Wert durch einen Ausdruck anstelle einer Sammlung bestimmt wird.

  • Verwenden Sie die Distinct-Klausel, um doppelte Abfrageergebnisse zu ignorieren.

  • Identifizieren Sie die Teile des Ergebnisses, die zurückgegeben werden sollen, indem Sie die Klauseln Skip, Take, Skip While und Take While verwenden.

Beispiel

Der folgende Abfrageausdruck verwendet eine From-Klausel, um eine Bereichsvariable cust für jedes Customer-Objekt in der customers-Sammlung zu deklarieren. Die Where-Klausel verwendet die Bereichsvariable, um die Ausgabe an Kunden aus der angegebenen Region einzuschränken. Die For Each-Schleife zeigt den Firmennamen für jeden Kunden im Abfrageergebnis an.

Sub DisplayCustomersForRegion(ByVal customers As List(Of Customer),
                              ByVal region As String)

    Dim customersForRegion = From cust In customers
                             Where cust.Region = region

    For Each cust In customersForRegion
        Console.WriteLine(cust.CompanyName)
    Next
End Sub

Siehe auch