Megosztás a következőn keresztül:


Kvantálási műveletek (Visual Basic)

A Quantifier-műveletek olyan Boolean értéket adnak vissza, amely jelzi, hogy a sorozat egyes elemei megfelelnek-e egy feltételnek.

Az alábbi ábra két különböző kvantálási műveletet ábrázol két különböző forrásütemezésen. Az első művelet megkérdezi, hogy az elemek közül bármelyik az "A" karakter-e. A második művelet megkérdezi, hogy az összes elem az "A" karakter-e. Ebben a példában mindkét metódus visszatér true .

LINQ Quantifier Operations

A kvantátorműveleteket végző standard lekérdezési operátor-metódusok a következő szakaszban találhatók.

Metódusok

Metódus neve Leírás Visual Basic Query Expression Szintaxis További információ
Mind Meghatározza, hogy a sorozat összes eleme megfelel-e egy feltételnek. Aggregate … In … Into All(…) Enumerable.All

Queryable.All
Bármely Meghatározza, hogy a sorozat bármely eleme megfelel-e egy feltételnek. Aggregate … In … Into Any() Enumerable.Any

Queryable.Any
Contains Meghatározza, hogy egy sorozat tartalmaz-e egy adott elemet. Nem alkalmazható. Enumerable.Contains

Queryable.Contains

Lekérdezési kifejezés szintaxisa – példák

Ezek a példák a Aggregate Visual Basic záradékát használják a LINQ-lekérdezés szűrési feltételének részeként.

Az alábbi példa a Aggregate záradékot és a All bővítménymetódust használja arra, hogy visszatérjen egy gyűjteményből azokról az emberekről, akiknek a háziállatai mind idősebbek egy adott kornál.

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

A következő példa a Aggregate záradékot és a Any bővítménymetódust használja a gyűjteményből azoknak az embereknek a visszatéréséhez, akik legalább egy, egy adott kornál idősebb kisállatkal rendelkeznek.

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

Lásd még