VB.net Aggregate

程序代码:

    Sub AggregateEx3()
        Dim fruits() As String =
        {"apple", "mango", "orange", "passionfruit", "grape"}

        '确定数组中的任何字符串是否长于"banana"。
        Dim longestName As String =
        fruits.Aggregate("banana",
                         Function(longest, fruit) _
                             IIf(fruit.Length > longest.Length, fruit, longest),
                         Function(fruit) fruit.ToUpper())
 
        MsgBox("名字最长的水果是" & longestName)
    End Sub

    Sub AggregateEx31()
        Dim fruits() As String =
        {"apple", "mango", "orange", "passionfruit", "passionfruitA", "passionfruitB", "grape"}

        '确定数组中长于"banana"的字符串中最长的(两个相同最长的,返回第一个)。
        Dim longestName As String =
        fruits.Aggregate("banana", AddressOf Agg1,
                           AddressOf Agg2)

        MsgBox("名字最长的水果是:" & longestName)
    End Sub

    Function Agg1(ByVal L As String, ByVal F As String) As String
        MsgBox(L & "   " & F)
        Return IIf(F.Length > L.Length, F, L)
    End Function

    Function Agg2(ByVal F As String) As String
        Return F.ToUpper
    End Function

    Sub AggregateEx2()
        Dim ints() As Integer = {4, 8, 8, 3, 9, 0, 7, 8, 2}

        ' Count the even numbers in the array, using a seed value of 0.
        Dim numEven As Integer =
        ints.Aggregate(0,
                       Function(total, number) _
                           IIf(number Mod 2 = 0, total + 1, total))

        ' Display the output.
        MsgBox("偶数的数量是:" & numEven)
    End Sub

    Sub AggregateEx21()
        Dim ints() As Integer = {4, 8, 8, 3, 9, 0, 7, 8, 2}

        ' Count the even numbers in the array, using a seed value of 0.
        Dim numEven As Integer =
        ints.Aggregate(0, AddressOf Agg3)

        ' Display the output.
        MsgBox("偶数的数量是:" & numEven)
    End Sub


    Function Agg3(ByVal t As Integer, ByVal n As Integer) As Integer
        Return IIf(n Mod 2 = 0, t + 1, t)
    End Function






Please follow WeChat's public account ByCAD