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 Boolean
False
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