Freigeben über


Where-Klausel (Visual Basic)

Gibt eine Filterbedingung für eine Abfrage an.

Syntax

Where condition  

Bestandteile

condition
Erforderlich. Ein Ausdruck, der bestimmt, ob die Werte für das aktuelle Element in der Auflistung in der Ausgabeauflistung enthalten sind. Der Ausdruck muss einen Boolean Wert oder eine Entsprechung eines Boolean Werts auswerten. Wenn die Bedingung ausgewertet wird True, wird das Element im Abfrageergebnis enthalten. Andernfalls wird das Element vom Abfrageergebnis ausgeschlossen.

Bemerkungen

Mit der Where Klausel können Sie Abfragedaten filtern, indem Sie nur Elemente auswählen, die bestimmte Kriterien erfüllen. Elemente, deren Werte dazu führen, dass die Where Klausel True in das Abfrageergebnis einbezogen wird; andere Elemente werden ausgeschlossen. Der Ausdruck, der in einer Where Klausel verwendet wird, muss auf ein Boolean oder das Äquivalent eines Werts BooleanFalse ausgewertet werden, z. B. eine ganze Zahl, die ausgewertet wird, wenn der Wert null ist. Sie können mehrere Ausdrücke in einer Where Klausel kombinieren, indem Sie logische Operatoren wie And , Or, AndAlso, OrElse, Is und IsNot.

Standardmäßig werden Abfrageausdrücke erst ausgewertet, wenn auf sie zugegriffen wird , z. B. wenn sie datengebunden sind oder in einer For Schleife durchlaufen werden. Daher wird die Where Klausel erst ausgewertet, wenn auf die Abfrage zugegriffen wird. Wenn Sie externe Werte für die Abfrage haben, die in der Where Klausel verwendet werden, stellen Sie sicher, dass der entsprechende Wert zum Zeitpunkt der Ausführung der Abfrage in der Where Klausel verwendet wird. Weitere Informationen zur Abfrageausführung finden Sie unter Schreiben der ersten LINQ-Abfrage (Visual Basic).

Sie können Funktionen innerhalb einer Where Klausel aufrufen, um eine Berechnung oder einen Vorgang für einen Wert aus dem aktuellen Element in der Auflistung auszuführen. Das Aufrufen einer Funktion in einer Where Klausel kann dazu führen, dass die Abfrage sofort ausgeführt wird, wenn sie definiert wird, anstatt auf sie zugegriffen wird. Weitere Informationen zur Abfrageausführung finden Sie unter Schreiben der ersten LINQ-Abfrage (Visual Basic).

Beispiel 1

Der folgende Abfrageausdruck verwendet eine Klausel, um eine From Bereichsvariable cust für jedes Customer Objekt in der customers Auflistung 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

Beispiel 2

Im folgenden Beispiel werden logische Operatoren in der Where Klausel verwendet And und Or verwendet.

Private Sub DisplayElements()
    Dim elements As List(Of Element) = BuildList()

    ' Get a list of elements that have an atomic number from 12 to 14,
    ' or that have a name that ends in "r".
    Dim subset = From theElement In elements
                 Where (theElement.AtomicNumber >= 12 And theElement.AtomicNumber < 15) _
                 Or theElement.Name.EndsWith("r")
                 Order By theElement.Name

    For Each theElement In subset
        Console.WriteLine(theElement.Name & " " & theElement.AtomicNumber)
    Next

    ' Output:
    '  Aluminum 13
    '  Magnesium 12
    '  Silicon 14
    '  Sulfur 16
End Sub

Private Function BuildList() As List(Of Element)
    Return New List(Of Element) From
        {
            {New Element With {.Name = "Sodium", .AtomicNumber = 11}},
            {New Element With {.Name = "Magnesium", .AtomicNumber = 12}},
            {New Element With {.Name = "Aluminum", .AtomicNumber = 13}},
            {New Element With {.Name = "Silicon", .AtomicNumber = 14}},
            {New Element With {.Name = "Phosphorous", .AtomicNumber = 15}},
            {New Element With {.Name = "Sulfur", .AtomicNumber = 16}}
        }
End Function

Public Class Element
    Public Property Name As String
    Public Property AtomicNumber As Integer
End Class

Weitere Informationen