LINQ量詞操作


量詞操作符

這些操作符返回一個布林值,即真或當一個序列中的部分或全部元素滿足特定條件的假。

操作符 描述 C#查詢表示式語法 VB查詢表示式語法
All 返回一個值'True',如果序列中的所有元素滿足謂詞條件 不適用 Aggregate … In … Into All(…)
Any 確定通過搜尋一個序列是否相同的任何元件滿足規定的條件 不適用 Aggregate … In … Into Any()
Contains 如果找到某個特定元素有一個序列返回一個“true”的值,如果序列不包含特定的元素,'false'值返回 不適用 不適用

All範例 - All(Tsource)擴充套件方法

VB

Module Module1

  Sub Main()

     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}}

     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

     For Each e In query
        Console.WriteLine("Name = {0}", e)
     Next

     Console.WriteLine(vbLf & "Press any key to continue.")
     Console.ReadKey()
  End Sub

  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
End Module

當在VB上述程式碼被編譯和執行時,它產生了以下結果:

Arlene 
Rui 

Press any key to continue.

Any例子- 擴充套件方法

VB

Module Module1

  Sub Main()

     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}}

     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

     For Each e In query
        Console.WriteLine("Name = {0}", e)
     Next

     Console.WriteLine(vbLf & "Press any key to continue.")
     Console.ReadKey()
  End Sub

  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
End Module

當在VB上述程式碼被編譯和執行時,它產生了以下結果:

Rui

Press any key to continue.