Where, clause (Visual Basic)

Spécifie la condition de filtrage pour une requête.

Syntaxe

Where condition  

Éléments

condition
Obligatoire. Une expression qui détermine si les valeurs de l’élément actif de la collection sont incluses dans la collection de sorties. L'expression doit donner une valeur Boolean ou l'équivalent d'une valeur Boolean. Si la condition prend la valeur True, l’élément est inclus dans le résultat de la requête ; sinon, il en est exclu.

Notes

La clause Where vous permet de filtrer les données de requête en sélectionnant uniquement les éléments qui répondent à certains critères. Les éléments dont les valeurs font que la clause Where est évaluée à True sont inclus dans le résultat de la requête ; les autres éléments sont exclus. L’expression utilisée dans une clause Where doit être évaluée à un Boolean ou à l’équivalent d’un Boolean, tel qu’un Entier qui est évalué à False quand sa valeur est égale à zéro. Vous pouvez combiner plusieurs expressions dans une clause Where à l’aide d’opérateurs logiques tels que And, Or, AndAlso, OrElse, Is et IsNot.

Par défaut, les expressions de requête ne sont pas évaluées tant qu’elles ne sont pas consultées, par exemple lorsqu’elles sont liées aux données ou itérées dans une boucle For. Par conséquent, la clause Where n’est pas évaluée tant que la requête n’est pas accessible. Si vous avez des valeurs externes à la requête utilisées dans la clause Where, vérifiez que la valeur appropriée est utilisée dans la clause Where au moment de l’exécution de la requête. Pour plus d’informations sur l’exécution des requêtes, consultez Écriture de votre première requête LINQ.

Vous pouvez appeler des fonctions dans une clause Where pour effectuer un calcul ou une opération sur une valeur à partir de l’élément actuel de la collection. L’appel d’une fonction dans une clause Where peut entraîner l'exécution de la requête dès sa définition et non lors de son accès. Pour plus d’informations sur l’exécution des requêtes, consultez Écriture de votre première requête LINQ.

Exemple 1

L’expression de requête suivante utilise une clause From pour déclarer une variable de portée cust pour chaque objet Customer de la collection customers. La clause Where utilise la variable de portée pour limiter la sortie aux clients de la région spécifiée. La boucle For Each affiche le nom de la société pour chaque client dans le résultat de la requête.

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

Exemple 2

L’exemple suivant utilise des opérateurs logiques And et Or dans la clause Where.

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

Voir aussi