Dela via


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 Trueinkluderas 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, Isoch 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

Se även