Enumerable.Aggregate Metode

Definisi

Overload

Aggregate<TSource,TAccumulate,TResult>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>, Func<TAccumulate,TResult>)

Menerapkan fungsi akumulator secara berurutan. Nilai seed yang ditentukan digunakan sebagai nilai akumulator awal, dan fungsi yang ditentukan digunakan untuk memilih nilai hasil.

Aggregate<TSource,TAccumulate>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>)

Menerapkan fungsi akumulator secara berurutan. Nilai seed yang ditentukan digunakan sebagai nilai akumulator awal.

Aggregate<TSource>(IEnumerable<TSource>, Func<TSource,TSource,TSource>)

Menerapkan fungsi akumulator secara berurutan.

Aggregate<TSource,TAccumulate,TResult>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>, Func<TAccumulate,TResult>)

Sumber:
Aggregate.cs
Sumber:
Aggregate.cs
Sumber:
Aggregate.cs

Menerapkan fungsi akumulator secara berurutan. Nilai seed yang ditentukan digunakan sebagai nilai akumulator awal, dan fungsi yang ditentukan digunakan untuk memilih nilai hasil.

public:
generic <typename TSource, typename TAccumulate, typename TResult>
[System::Runtime::CompilerServices::Extension]
 static TResult Aggregate(System::Collections::Generic::IEnumerable<TSource> ^ source, TAccumulate seed, Func<TAccumulate, TSource, TAccumulate> ^ func, Func<TAccumulate, TResult> ^ resultSelector);
public static TResult Aggregate<TSource,TAccumulate,TResult> (this System.Collections.Generic.IEnumerable<TSource> source, TAccumulate seed, Func<TAccumulate,TSource,TAccumulate> func, Func<TAccumulate,TResult> resultSelector);
static member Aggregate : seq<'Source> * 'Accumulate * Func<'Accumulate, 'Source, 'Accumulate> * Func<'Accumulate, 'Result> -> 'Result
<Extension()>
Public Function Aggregate(Of TSource, TAccumulate, TResult) (source As IEnumerable(Of TSource), seed As TAccumulate, func As Func(Of TAccumulate, TSource, TAccumulate), resultSelector As Func(Of TAccumulate, TResult)) As TResult

Jenis parameter

TSource

Jenis elemen source.

TAccumulate

Jenis nilai akumulator.

TResult

Jenis nilai yang dihasilkan.

Parameter

source
IEnumerable<TSource>

Untuk IEnumerable<T> mengagregasi.

seed
TAccumulate

Nilai akumulator awal.

func
Func<TAccumulate,TSource,TAccumulate>

Fungsi akumulator yang akan dipanggil pada setiap elemen.

resultSelector
Func<TAccumulate,TResult>

Fungsi untuk mengubah nilai akumulator akhir menjadi nilai hasil.

Mengembalikan

TResult

Nilai akumulator akhir yang diubah.

Pengecualian

source atau func atau resultSelector adalah null.

Contoh

Contoh kode berikut menunjukkan cara menggunakan Aggregate untuk menerapkan fungsi akumulator dan pemilih hasil.

string[] fruits = { "apple", "mango", "orange", "passionfruit", "grape" };

// Determine whether any string in the array is longer than "banana".
string longestName =
    fruits.Aggregate("banana",
                    (longest, next) =>
                        next.Length > longest.Length ? next : longest,
    // Return the final result as an upper case string.
                    fruit => fruit.ToUpper());

Console.WriteLine(
    "The fruit with the longest name is {0}.",
    longestName);

// This code produces the following output:
//
// The fruit with the longest name is PASSIONFRUIT.
Sub AggregateEx3()
    Dim fruits() As String =
    {"apple", "mango", "orange", "passionfruit", "grape"}

    ' Determine whether any string in the array is longer than "banana".
    Dim longestName As String =
    fruits.Aggregate("banana",
                     Function(ByVal longest, ByVal fruit) _
                         IIf(fruit.Length > longest.Length, fruit, longest),
                     Function(ByVal fruit) fruit.ToUpper())

    ' Display the output.
    Console.WriteLine($"The fruit with the longest name is {longestName}")
End Sub

' This code produces the following output:
'
' The fruit with the longest name is PASSIONFRUIT

Keterangan

Metode Aggregate<TSource,TAccumulate,TResult>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>, Func<TAccumulate,TResult>) ini memudahkan untuk melakukan perhitungan atas urutan nilai. Metode ini bekerja dengan memanggil func satu kali untuk setiap elemen di source. Setiap kali func dipanggil, Aggregate<TSource,TAccumulate,TResult>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>, Func<TAccumulate,TResult>) meneruskan elemen dari urutan dan nilai agregat (sebagai argumen pertama ke func). Nilai seed parameter digunakan sebagai nilai agregat awal. Hasil func menggantikan nilai agregat sebelumnya. Hasil akhir diteruskan func ke resultSelector untuk mendapatkan hasil akhir dari Aggregate<TSource,TAccumulate,TResult>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>, Func<TAccumulate,TResult>).

Untuk menyederhanakan operasi agregasi umum, operator kueri standar juga menyertakan metode jumlah tujuan umum, Count, dan empat metode agregasi numerik, yaitu Min, , Max, Sumdan Average.

Berlaku untuk

Aggregate<TSource,TAccumulate>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>)

Sumber:
Aggregate.cs
Sumber:
Aggregate.cs
Sumber:
Aggregate.cs

Menerapkan fungsi akumulator secara berurutan. Nilai seed yang ditentukan digunakan sebagai nilai akumulator awal.

public:
generic <typename TSource, typename TAccumulate>
[System::Runtime::CompilerServices::Extension]
 static TAccumulate Aggregate(System::Collections::Generic::IEnumerable<TSource> ^ source, TAccumulate seed, Func<TAccumulate, TSource, TAccumulate> ^ func);
public static TAccumulate Aggregate<TSource,TAccumulate> (this System.Collections.Generic.IEnumerable<TSource> source, TAccumulate seed, Func<TAccumulate,TSource,TAccumulate> func);
static member Aggregate : seq<'Source> * 'Accumulate * Func<'Accumulate, 'Source, 'Accumulate> -> 'Accumulate
<Extension()>
Public Function Aggregate(Of TSource, TAccumulate) (source As IEnumerable(Of TSource), seed As TAccumulate, func As Func(Of TAccumulate, TSource, TAccumulate)) As TAccumulate

Jenis parameter

TSource

Jenis elemen source.

TAccumulate

Jenis nilai akumulator.

Parameter

source
IEnumerable<TSource>

Untuk IEnumerable<T> mengagregasi.

seed
TAccumulate

Nilai akumulator awal.

func
Func<TAccumulate,TSource,TAccumulate>

Fungsi akumulator yang akan dipanggil pada setiap elemen.

Mengembalikan

TAccumulate

Nilai akumulator akhir.

Pengecualian

source atau func adalah null.

Contoh

Contoh kode berikut menunjukkan cara menggunakan Aggregate untuk menerapkan fungsi akumulator dan menggunakan nilai awal.

int[] ints = { 4, 8, 8, 3, 9, 0, 7, 8, 2 };

// Count the even numbers in the array, using a seed value of 0.
int numEven = ints.Aggregate(0, (total, next) =>
                                    next % 2 == 0 ? total + 1 : total);

Console.WriteLine("The number of even integers is: {0}", numEven);

// This code produces the following output:
//
// The number of even integers is: 6
Sub AggregateEx2()
    ' Create an array of Integers.
    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(ByVal total, ByVal number) _
                       IIf(number Mod 2 = 0, total + 1, total))

    ' Display the output.
    Console.WriteLine($"The number of even integers is {numEven}")
End Sub

' This code produces the following output:
'
'The number of even integers is 6

Keterangan

Metode Aggregate<TSource,TAccumulate>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>) ini memudahkan untuk melakukan perhitungan atas urutan nilai. Metode ini bekerja dengan memanggil func satu kali untuk setiap elemen di source. Setiap kali func dipanggil, Aggregate<TSource,TAccumulate>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>) meneruskan elemen dari urutan dan nilai agregat (sebagai argumen pertama ke func). Nilai seed parameter digunakan sebagai nilai agregat awal. Hasil func menggantikan nilai agregat sebelumnya. Aggregate<TSource,TAccumulate>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>) mengembalikan hasil akhir dari func.

Untuk menyederhanakan operasi agregasi umum, operator kueri standar juga menyertakan metode jumlah tujuan umum, Count, dan empat metode agregasi numerik, yaitu Min, , Max, Sumdan Average.

Berlaku untuk

Aggregate<TSource>(IEnumerable<TSource>, Func<TSource,TSource,TSource>)

Sumber:
Aggregate.cs
Sumber:
Aggregate.cs
Sumber:
Aggregate.cs

Menerapkan fungsi akumulator secara berurutan.

public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
 static TSource Aggregate(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, TSource, TSource> ^ func);
public static TSource Aggregate<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TSource,TSource> func);
static member Aggregate : seq<'Source> * Func<'Source, 'Source, 'Source> -> 'Source
<Extension()>
Public Function Aggregate(Of TSource) (source As IEnumerable(Of TSource), func As Func(Of TSource, TSource, TSource)) As TSource

Jenis parameter

TSource

Jenis elemen source.

Parameter

source
IEnumerable<TSource>

Untuk IEnumerable<T> mengagregasi.

func
Func<TSource,TSource,TSource>

Fungsi akumulator yang akan dipanggil pada setiap elemen.

Mengembalikan

TSource

Nilai akumulator akhir.

Pengecualian

source atau func adalah null.

source tidak berisi elemen.

Contoh

Contoh kode berikut menunjukkan cara membalikkan urutan kata dalam string dengan menggunakan Aggregate.

string sentence = "the quick brown fox jumps over the lazy dog";

// Split the string into individual words.
string[] words = sentence.Split(' ');

// Prepend each word to the beginning of the
// new sentence to reverse the word order.
string reversed = words.Aggregate((workingSentence, next) =>
                                      next + " " + workingSentence);

Console.WriteLine(reversed);

// This code produces the following output:
//
// dog lazy the over jumps fox brown quick the
Sub AggregateEx1()
    Dim sentence As String =
    "the quick brown fox jumps over the lazy dog"
    ' Split the string into individual words.
    Dim words() As String = sentence.Split(" "c)
    ' Prepend each word to the beginning of the new sentence to reverse the word order.
    Dim reversed As String =
    words.Aggregate(Function(ByVal current, ByVal word) word & " " & current)

    ' Display the output.
    Console.WriteLine(reversed)
End Sub

' This code produces the following output:
'
' dog lazy the over jumps fox brown quick the

Keterangan

Metode Aggregate<TSource>(IEnumerable<TSource>, Func<TSource,TSource,TSource>) ini memudahkan untuk melakukan perhitungan atas urutan nilai. Metode ini bekerja dengan memanggil func satu kali untuk setiap elemen kecuali source yang pertama. Setiap kali func dipanggil, Aggregate<TSource>(IEnumerable<TSource>, Func<TSource,TSource,TSource>) meneruskan elemen dari urutan dan nilai agregat (sebagai argumen pertama ke func). Elemen source pertama digunakan sebagai nilai agregat awal. Hasil func menggantikan nilai agregat sebelumnya. Aggregate<TSource>(IEnumerable<TSource>, Func<TSource,TSource,TSource>) mengembalikan hasil akhir dari func.

Kelebihan beban Aggregate metode ini tidak cocok untuk semua kasus karena menggunakan elemen pertama sebagai source nilai agregat awal. Anda harus memilih kelebihan beban lain jika nilai pengembalian hanya boleh menyertakan elemen source yang memenuhi kondisi tertentu. Misalnya, kelebihan beban ini tidak dapat diandalkan jika Anda ingin menghitung jumlah angka genap di source. Hasilnya akan salah jika elemen pertama ganjil alih-alih genap.

Untuk menyederhanakan operasi agregasi umum, operator kueri standar juga menyertakan metode jumlah tujuan umum, Count, dan empat metode agregasi numerik, yaitu Min, , Max, Sumdan Average.

Berlaku untuk