Partager via


Opérations sur les quantificateurs (Visual Basic)

Les opérations de quantificateur retournent une valeur Boolean qui indique si certains ou tous les éléments d’une séquence remplissent une condition.

L’illustration suivante représente deux opérations de quantificateur différentes sur deux séquences sources différentes. La première opération demande s’il y a des éléments qui sont le caractère « A ». La seconde opération demande si tous les éléments sont le caractère « A ». Les deux méthodes retournent true dans cet exemple.

LINQ Quantifier Operations

Les méthodes d’opérateur de requête standard qui effectuent des opérations de quantificateur sont répertoriées dans la section suivante.

Méthodes

Nom de la méthode Description Syntaxe de l'expression de requête en Visual Basic Informations complémentaires
Tous Détermine si tous les éléments d’une séquence remplissent une condition. Aggregate … In … Into All(…) Enumerable.All

Queryable.All
Quelconque Détermine si certains éléments d’une séquence remplissent une condition. Aggregate … In … Into Any() Enumerable.Any

Queryable.Any
Contient Détermine si une séquence contient un élément spécifié. Non applicable. Enumerable.Contains

Queryable.Contains

Exemples de syntaxe d'expression de requête

Ces exemples utilisent la clause Aggregate en Visual Basic dans le cadre de la condition de filtrage dans une requête LINQ.

L’exemple suivant utilise la clause Aggregate et la méthode All d’extension pour renvoyer à partir d’une collection les personnes dont les animaux domestiques sont tous plus âgés que l’âge spécifié.

Class Person
    Public Property Name As String
    Public Property Pets As Pet()
End Class

Class Pet
    Public Property Name As String
    Public Property Age As Integer
End Class

Sub All()
    Dim barley As New Pet With {.Name = "Barley", .Age = 4}
    Dim boots As New Pet With {.Name = "Boots", .Age = 1}
    Dim whiskers As New Pet With {.Name = "Whiskers", .Age = 6}
    Dim bluemoon As New Pet With {.Name = "Blue Moon", .Age = 9}
    Dim daisy As New Pet With {.Name = "Daisy", .Age = 3}

    Dim charlotte As New Person With {.Name = "Charlotte", .Pets = New Pet() {barley, boots}}
    Dim arlene As New Person With {.Name = "Arlene", .Pets = New Pet() {whiskers}}
    Dim rui As New Person With {.Name = "Rui", .Pets = New Pet() {bluemoon, daisy}}

    ' Create the list of Person objects that will be queried.
    Dim people As New System.Collections.Generic.List(Of Person)(New Person() {charlotte, arlene, rui})

    Dim query = From pers In people
                Where (Aggregate pt In pers.Pets Into All(pt.Age > 2))
                Select pers.Name

    Dim sb As New System.Text.StringBuilder()
    For Each name As String In query
        sb.AppendLine(name)
    Next

    ' Display the results.
    MsgBox(sb.ToString())

    ' This code produces the following output:

    ' Arlene
    ' Rui

End Sub

L’exemple suivant utilise la clause Aggregate et la méthode Any d’extension pour renvoyer à partir d’une collection les personnes dont les animaux domestiques sont tous plus âgés que l’âge spécifié.

Class Person
    Public Property Name As String
    Public Property Pets As Pet()
End Class

Class Pet
    Public Property Name As String
    Public Property Age As Integer
End Class

Sub Any()
    Dim barley As New Pet With {.Name = "Barley", .Age = 4}
    Dim boots As New Pet With {.Name = "Boots", .Age = 1}
    Dim whiskers As New Pet With {.Name = "Whiskers", .Age = 6}
    Dim bluemoon As New Pet With {.Name = "Blue Moon", .Age = 9}
    Dim daisy As New Pet With {.Name = "Daisy", .Age = 3}

    Dim charlotte As New Person With {.Name = "Charlotte", .Pets = New Pet() {barley, boots}}
    Dim arlene As New Person With {.Name = "Arlene", .Pets = New Pet() {whiskers}}
    Dim rui As New Person With {.Name = "Rui", .Pets = New Pet() {bluemoon, daisy}}

    ' Create the list of Person objects that will be queried.
    Dim people As New System.Collections.Generic.List(Of Person)(New Person() {charlotte, arlene, rui})

    Dim query = From pers In people
                Where (Aggregate pt In pers.Pets Into Any(pt.Age > 7))
                Select pers.Name

    Dim sb As New System.Text.StringBuilder()
    For Each name As String In query
        sb.AppendLine(name)
    Next

    ' Display the results.
    MsgBox(sb.ToString())

    ' This code produces the following output:

    ' Rui

End Sub

Voir aussi