Where-sats (Visual Basic)
Anger filtreringsvillkoret för en fråga.
Syntax
Where condition
Delar
condition
Obligatoriska. Ett uttryck som avgör om värdena för det aktuella objektet i samlingen ingår i utdatasamlingen. Uttrycket måste utvärderas till ett Boolean
värde eller en motsvarighet till ett Boolean
värde. Om villkoret utvärderas till True
inkluderas elementet i frågeresultatet. Annars undantas elementet från frågeresultatet.
Kommentarer
Med Where
satsen kan du filtrera frågedata genom att bara välja element som uppfyller vissa kriterier. Element vars värden gör Where
att satsen utvärderas True
inkluderas i frågeresultatet. Andra element exkluderas. Uttrycket som används i en Where
sats måste utvärderas till en Boolean
eller motsvarande ett Boolean
, till exempel ett heltal som utvärderas till False
när dess värde är noll. Du kan kombinera flera uttryck i en Where
sats med hjälp av logiska operatorer som And
, Or
, AndAlso
, OrElse
, Is
och IsNot
.
Som standard utvärderas inte frågeuttryck förrän de har använts, till exempel när de är databundna eller itererade i en For
loop. Satsen utvärderas därför Where
inte förrän frågan har använts. Om du har värden utanför frågan som används i Where
-satsen kontrollerar du att lämpligt värde används i Where
-satsen när frågan körs. Mer information om frågekörning finns i Skriva din första LINQ-fråga.
Du kan anropa funktioner i en Where
sats för att utföra en beräkning eller åtgärd på ett värde från det aktuella elementet i samlingen. Om du anropar en funktion i en Where
sats kan frågan köras omedelbart när den definieras i stället för när den används. Mer information om frågekörning finns i Skriva din första LINQ-fråga.
Exempel 1
Följande frågeuttryck använder en From
sats för att deklarera en intervallvariabel cust
för varje Customer
objekt i customers
samlingen. Where
Satsen använder intervallvariabeln för att begränsa utdata till kunder från den angivna regionen. Loopen For Each
visar företagsnamnet för varje kund i frågeresultatet.
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
Exempel 2
I följande exempel används And
och Or
logiska operatorer i Where
-satsen.
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