Freigeben über


Where-Klausel (Visual Basic)

Gibt die Filterbedingung für eine Abfrage an.

Where condition

Teile

  • condition
    Erforderlich. Ein Ausdruck, mit dem ermittelt wird, ob die Werte des aktuellen Elements der Auflistung in die Ausgabeauflistung aufgenommen werden. Der Ausdruck muss sich zu einem Boolean-Wert oder dem Äquivalent eines Boolean-Werts evaluieren lassen. Wenn die Bedingung True ergibt, wird das Element in das Abfrageergebnis aufgenommen, andernfalls nicht.

Hinweise

Mit der Where-Klausel können Sie Abfragedaten filtern, indem nur die Elemente ausgewählt werden, die bestimmte Kriterien erfüllen. Elemente, durch deren Werte die Where-Klausel True ergibt, werden in das Abfrageergebnis aufgenommen, alle andere Elemente nicht. Der Ausdruck, der in einer Where-Klausel verwendet wird, muss sich zu einem Boolean oder dem Äquivalent eines Boolean evaluieren lassen, z. B. zu einem Integer-Wert, der False ergibt, wenn der Wert 0 (null) ist. Sie können in einer Where-Klausel mehrere Ausdrücke mithilfe von logischen Operatoren wie And, Or, AndAlso, OrElse, Is und IsNot kombinieren.

Standardmäßig werden Abfrageausdrücke nicht evaluiert, bis auf sie zugegriffen wird, beispielsweise wenn sie datengebunden sind oder in einer For-Schleife durchlaufen werden. Deshalb wird die Where-Klausel erst ausgewertet, wenn auf die Abfrage zugegriffen wird. Wenn Sie über Werte verfügen, die für die Abfrage extern sind und die in der Where-Klausel verwendet werden, stellen Sie sicher, dass die entsprechenden Werte zum Zeitpunkt der Ausführung der Abfrage in der Where-Klausel verwendet werden. Weitere Informationen zur Abfrageausführung finden Sie unter Schreiben der ersten LINQ-Abfrage (Visual Basic).

In einer Where-Klausel können Sie Funktionen aufrufen, um für einen Wert des aktuellen Elements der Auflistung eine Berechnung oder Operation durchzuführen. Durch das Aufrufen einer Funktion in einer Where-Klausel wird die Abfrage möglicherweise unmittelbar bei der Definition und nicht erst beim Zugriff ausgeführt. Weitere Informationen zur Abfrageausführung finden Sie unter Schreiben der ersten LINQ-Abfrage (Visual Basic).

Beispiel

Der folgende Abfrageausdruck verwendet eine From-Klausel zum Deklarieren einer Bereichsvariablen cust für jedes Customer-Objekt in der customers-Auflistung. Die Where-Klausel verwendet die Bereichsvariable, um die Ausgabe auf Kunden aus der angegebenen Region einzuschränken. Die For Each-Schleife zeigt den Namen des Unternehmens 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

Im folgenden Beispiel wird And und Or logische Operatoren in der Where-Klausel.

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

Siehe auch

Referenz

From-Klausel (Visual Basic)

Select-Klausel (Visual Basic)

For Each...Next-Anweisung (Visual Basic)

Konzepte

Einführung in LINQ in Visual Basic

Weitere Ressourcen

Abfragen (Visual Basic)