Share via


Opérations de quantificateur

Mise à jour : novembre 2007

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 source différentes. La première opération demande si un ou plusieurs des éléments est le caractère 'A' et le résultat est true. La deuxième opération demande si tous les éléments sont le caractère 'A' et le résultat est true.

Opérations de quantificateur LINQ

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 d'expression de requête C#

Syntaxe d'expression de requête Visual Basic

Informations supplémentaires

All

Détermine si tous les éléments d'une séquence remplissent une condition.

Non applicable.

Aggregate … In … Into All(…)

Enumerable.All<TSource>

Queryable.All<TSource>

Any

Détermine si certains éléments d'une séquence remplissent une condition.

Non applicable.

Aggregate … In … Into Any()

Enumerable.Any

Queryable.Any

Contains

Détermine si une séquence contient un élément spécifié.

Non applicable.

Non applicable.

Enumerable.Contains

Queryable.Contains

Exemples de syntaxe d'expression de requête

Ces exemples utilisent la clause Aggregate dans Visual Basic, dans la condition de filtrage d'une requête LINQ.

L'exemple suivant utilise la clause Aggregate et la méthode d'extension All<TSource> pour retourner les personnes d'une collection dont les animaux domestiques ont tous dépassé un âge spécifié.

Class Person
    Private _name As String
    Private _pets As Pet()

    Public Property Name() As String
        Get
            Return _name
        End Get
        Set(ByVal value As String)
            _name = value
        End Set
    End Property

    Public Property Pets() As Pet()
        Get
            Return _pets
        End Get
        Set(ByVal value As Pet())
            _pets = value
        End Set
    End Property
End Class

Class Pet
    Private _name As String
    Private _age As Integer

    Public Property Name() As String
        Get
            Return _name
        End Get
        Set(ByVal value As String)
            _name = value
        End Set
    End Property

    Public Property Age() As Integer
        Get
            Return _age
        End Get
        Set(ByVal value As Integer)
            _age = value
        End Set
    End Property
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 d'extension Any à retourner les personnes d'une collection ayant au moins un animal domestique qui a dépassé un âge spécifié.

Class Person
    Private _name As String
    Private _pets As Pet()

    Public Property Name() As String
        Get
            Return _name
        End Get
        Set(ByVal value As String)
            _name = value
        End Set
    End Property

    Public Property Pets() As Pet()
        Get
            Return _pets
        End Get
        Set(ByVal value As Pet())
            _pets = value
        End Set
    End Property
End Class

Class Pet
    Private _name As String
    Private _age As Integer

    Public Property Name() As String
        Get
            Return _name
        End Get
        Set(ByVal value As String)
            _name = value
        End Set
    End Property

    Public Property Age() As Integer
        Get
            Return _age
        End Get
        Set(ByVal value As Integer)
            _age = value
        End Set
    End Property
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

En savoir plus sur l'exécution des opérations de quantification

Voir aussi

Tâches

Comment : spécifier dynamiquement des filtres de prédicat au moment de l'exécution (Guide de programmation C#)

Concepts

Vue d'ensemble des opérateurs de requête standard

Référence

Aggregate, clause (Visual Basic)

System.Linq