Enumerable.Aggregate Metódus

Definíció

Túlterhelések

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

Egy akkumulátorfüggvényt alkalmaz egy sorozatra. A rendszer a megadott magértéket használja a kezdeti gyűjtőértékként, a megadott függvény pedig az eredményérték kiválasztásához.

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

Egy akkumulátorfüggvényt alkalmaz egy sorozatra. A rendszer a megadott magértéket használja a kezdeti gyűjtőértékként.

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

Egy akkumulátorfüggvényt alkalmaz egy sorozatra.

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

Forrás:
Aggregate.cs
Forrás:
Aggregate.cs
Forrás:
Aggregate.cs
Forrás:
Aggregate.cs
Forrás:
Aggregate.cs

Egy akkumulátorfüggvényt alkalmaz egy sorozatra. A rendszer a megadott magértéket használja a kezdeti gyűjtőértékként, a megadott függvény pedig az eredményérték kiválasztásához.

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

Típusparaméterek

TSource

A . elemeinek sourcetípusa.

TAccumulate

Az akkumulátor értékének típusa.

TResult

Az eredményként kapott érték típusa.

Paraméterek

source
IEnumerable<TSource>

Egy IEnumerable<T> összesítendő.

seed
TAccumulate

A kezdeti akkumulátorérték.

func
Func<TAccumulate,TSource,TAccumulate>

Az egyes elemeken meghívandó akkumulátorfüggvény.

resultSelector
Func<TAccumulate,TResult>

Egy függvény, amely átalakítja a végső akkumulátor értékét az eredményértékké.

Válaszok

TResult

Az átalakított végső akkumulátor értéke.

Kivételek

source vagy funcresultSelector az nullis.

Példák

Az alábbi példakód bemutatja, hogyan használható Aggregate egy akkumulátorfüggvény és egy eredményválasztó alkalmazása.

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

Megjegyzések

A Aggregate<TSource,TAccumulate,TResult>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>, Func<TAccumulate,TResult>) metódus egyszerűvé teszi a számítást egy értéksorozaton keresztül. Ez a metódus úgy működik, hogy a minden eleméhez egyszeri meghívást funcvégezsource. Minden alkalommal, amikor func meghívják, átadja mind az elemet a sorozatból, Aggregate<TSource,TAccumulate,TResult>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>, Func<TAccumulate,TResult>) mind az összesített értéket (első argumentumként).func A paraméter értéke seed lesz a kezdeti összesített érték. Az eredmény felülírja func az előző összesített értéket. Az eredmény végső eredménye funcresultSelector a következő lesz Aggregate<TSource,TAccumulate,TResult>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>, Func<TAccumulate,TResult>): .

A gyakori összesítési műveletek egyszerűsítése érdekében a szabványos lekérdezési operátorok közé tartozik egy általános célú számmetódus, Countvalamint négy numerikus összesítési módszer, nevezetesen Mina , Maxés SumAverage.

A következőre érvényes:

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

Forrás:
Aggregate.cs
Forrás:
Aggregate.cs
Forrás:
Aggregate.cs
Forrás:
Aggregate.cs
Forrás:
Aggregate.cs

Egy akkumulátorfüggvényt alkalmaz egy sorozatra. A rendszer a megadott magértéket használja a kezdeti gyűjtőértékként.

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

Típusparaméterek

TSource

A . elemeinek sourcetípusa.

TAccumulate

Az akkumulátor értékének típusa.

Paraméterek

source
IEnumerable<TSource>

Egy IEnumerable<T> összesítendő.

seed
TAccumulate

A kezdeti akkumulátorérték.

func
Func<TAccumulate,TSource,TAccumulate>

Az egyes elemeken meghívandó akkumulátorfüggvény.

Válaszok

TAccumulate

A végső akkumulátor értéke.

Kivételek

source vagy func az null.

Példák

Az alábbi példakód bemutatja, hogyan használható Aggregate az akkumulátorfüggvények alkalmazása és a magérték használata.

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

Megjegyzések

A Aggregate<TSource,TAccumulate>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>) metódus egyszerűvé teszi a számítást egy értéksorozaton keresztül. Ez a metódus úgy működik, hogy a minden eleméhez egyszeri meghívást funcvégezsource. Minden alkalommal, amikor func meghívják, átadja mind az elemet a sorozatból, Aggregate<TSource,TAccumulate>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>) mind az összesített értéket (első argumentumként).func A paraméter értéke seed lesz a kezdeti összesített érték. Az eredmény felülírja func az előző összesített értéket. Aggregate<TSource,TAccumulate>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>) A végeredményét funcadja vissza.

A gyakori összesítési műveletek egyszerűsítése érdekében a szabványos lekérdezési operátorok közé tartozik egy általános célú számmetódus, Countvalamint négy numerikus összesítési módszer, nevezetesen Mina , Maxés SumAverage.

A következőre érvényes:

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

Forrás:
Aggregate.cs
Forrás:
Aggregate.cs
Forrás:
Aggregate.cs
Forrás:
Aggregate.cs
Forrás:
Aggregate.cs

Egy akkumulátorfüggvényt alkalmaz egy sorozatra.

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

Típusparaméterek

TSource

A . elemeinek sourcetípusa.

Paraméterek

source
IEnumerable<TSource>

Egy IEnumerable<T> összesítendő.

func
Func<TSource,TSource,TSource>

Az egyes elemeken meghívandó akkumulátorfüggvény.

Válaszok

TSource

A végső akkumulátor értéke.

Kivételek

source vagy func az null.

source nem tartalmaz elemeket.

Példák

Az alábbi példakód bemutatja, hogyan fordíthatja vissza a szavak sorrendjét egy sztringben a használatával 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

Megjegyzések

A Aggregate<TSource>(IEnumerable<TSource>, Func<TSource,TSource,TSource>) metódus egyszerűvé teszi a számítást egy értéksorozaton keresztül. Ez a módszer úgy működik, hogy az első kivételével minden egyes elemhez func egyszer hív megsource. Minden alkalommal, amikor func meghívják, átadja mind az elemet a sorozatból, Aggregate<TSource>(IEnumerable<TSource>, Func<TSource,TSource,TSource>) mind az összesített értéket (első argumentumként).func A rendszer a kezdeti összesített értékként használja az első elemet source . Az eredmény felülírja func az előző összesített értéket. Aggregate<TSource>(IEnumerable<TSource>, Func<TSource,TSource,TSource>) A végeredményét funcadja vissza.

A metódus túlterhelése Aggregate nem minden esetben megfelelő, mert az első elemét source használja a kezdeti összesített értékként. Másik túlterhelést kell választania, ha a visszatérési értéknek csak az adott feltételnek megfelelő elemeket kell tartalmaznia source . Ez a túlterhelés például nem megbízható, ha ki szeretné számítani a páros számok sourceösszegét. Az eredmény helytelen lesz, ha az első elem páros helyett páratlan.

A gyakori összesítési műveletek egyszerűsítése érdekében a szabványos lekérdezési operátorok közé tartozik egy általános célú számmetódus, Countvalamint négy numerikus összesítési módszer, nevezetesen Mina , Maxés SumAverage.

A következőre érvényes: