Aracılığıyla paylaş


Queryable.Aggregate Yöntem

Tanım

Aşırı Yüklemeler

Aggregate<TSource,TAccumulate,TResult>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>, Expression<Func<TAccumulate, TResult>>)

Bir dizi üzerinde bir biriktirici işlevi uygular. Belirtilen çekirdek değeri ilk biriktirici değeri olarak kullanılır ve belirtilen işlev sonuç değerini seçmek için kullanılır.

Aggregate<TSource,TAccumulate>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>)

Bir dizi üzerinde bir biriktirici işlevi uygular. Belirtilen çekirdek değeri ilk biriktirici değeri olarak kullanılır.

Aggregate<TSource>(IQueryable<TSource>, Expression<Func<TSource,TSource,TSource>>)

Bir dizi üzerinde bir biriktirici işlevi uygular.

Aggregate<TSource,TAccumulate,TResult>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>, Expression<Func<TAccumulate, TResult>>)

Kaynak:
Queryable.cs
Kaynak:
Queryable.cs
Kaynak:
Queryable.cs

Bir dizi üzerinde bir biriktirici işlevi uygular. Belirtilen çekirdek değeri ilk biriktirici değeri olarak kullanılır ve belirtilen işlev sonuç değerini seçmek için kullanılır.

public:
generic <typename TSource, typename TAccumulate, typename TResult>
[System::Runtime::CompilerServices::Extension]
 static TResult Aggregate(System::Linq::IQueryable<TSource> ^ source, TAccumulate seed, System::Linq::Expressions::Expression<Func<TAccumulate, TSource, TAccumulate> ^> ^ func, System::Linq::Expressions::Expression<Func<TAccumulate, TResult> ^> ^ selector);
public static TResult Aggregate<TSource,TAccumulate,TResult> (this System.Linq.IQueryable<TSource> source, TAccumulate seed, System.Linq.Expressions.Expression<Func<TAccumulate,TSource,TAccumulate>> func, System.Linq.Expressions.Expression<Func<TAccumulate,TResult>> selector);
static member Aggregate : System.Linq.IQueryable<'Source> * 'Accumulate * System.Linq.Expressions.Expression<Func<'Accumulate, 'Source, 'Accumulate>> * System.Linq.Expressions.Expression<Func<'Accumulate, 'Result>> -> 'Result
<Extension()>
Public Function Aggregate(Of TSource, TAccumulate, TResult) (source As IQueryable(Of TSource), seed As TAccumulate, func As Expression(Of Func(Of TAccumulate, TSource, TAccumulate)), selector As Expression(Of Func(Of TAccumulate, TResult))) As TResult

Tür Parametreleri

TSource

öğelerinin sourcetürü.

TAccumulate

Biriktirici değerinin türü.

TResult

Sonuçta elde edilen değerin türü.

Parametreler

source
IQueryable<TSource>

Üzerinde toplanmış bir dizi.

seed
TAccumulate

İlk biriktirici değeri.

func
Expression<Func<TAccumulate,TSource,TAccumulate>>

Her öğede çağrılacak bir biriktirici işlevi.

selector
Expression<Func<TAccumulate,TResult>>

Son biriktirici değerini sonuç değerine dönüştüren bir işlev.

Döndürülenler

TResult

Dönüştürülen son biriktirici değeri.

Özel durumlar

source veya func veya selector şeklindedir null.

Örnekler

Aşağıdaki kod örneği, bir biriktirici işlevi ve sonuç seçici uygulamak için nasıl kullanılacağını Aggregate<TSource,TAccumulate,TResult>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>, Expression<Func<TAccumulate, TResult>>) gösterir.

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

// Determine whether any string in the array is longer than "banana".
string longestName =
    fruits.AsQueryable().Aggregate(
    "banana",
    (longest, next) => next.Length > longest.Length ? next : longest,
    // Return the final result as an uppercase 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.
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.AsQueryable().Aggregate( _
    "banana", _
    Function(ByVal longest, ByVal fruit) IIf(fruit.Length > longest.Length, fruit, longest), _
    Function(ByVal fruit) fruit.ToUpper() _
)

MsgBox(String.Format( _
    "The fruit with the longest name is {0}.", longestName) _
)

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

Açıklamalar

Bu yöntem, tür bağımsız değişkeni türlerden Expression<TDelegate> biri olan türünde en az bir parametreye Func<T,TResult> sahiptir. Bu parametreler için bir lambda ifadesi geçirebilirsiniz ve bu ifade bir Expression<TDelegate>olarak derlenir.

yöntemi, Aggregate<TSource,TAccumulate,TResult>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>, Expression<Func<TAccumulate, TResult>>) kendisini oluşturulan genel bir MethodCallExpression yöntem olarak çağırmayı Aggregate<TSource,TAccumulate,TResult>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>, Expression<Func<TAccumulate, TResult>>) temsil eden bir oluşturur. Daha sonra parametresinin özelliği tarafından Provider temsil edilen yöntemine IQueryProvidersource iletirMethodCallExpression.Execute<TResult>(Expression)

Çağrıyı Aggregate<TSource,TAccumulate,TResult>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>, Expression<Func<TAccumulate, TResult>>) temsil eden bir ifade ağacının yürütülmesi sonucunda oluşan sorgu davranışı, parametre türünün uygulanmasına source bağlıdır. Beklenen davranış, funcbelirtilen işlevin kaynak dizideki her değere uygulanması ve birikmiş değerin döndürülmesidir. seed parametresi, içindeki ilk parametreye funckarşılık gelen birikmiş değerin tohum değeri olarak kullanılır. Sonuç değeri elde etmek için son birikmiş değer öğesine selector geçirilir.

Yaygın toplama işlemlerini basitleştirmek için, standart sorgu işleçleri Count kümesi iki sayım yöntemi ve ile LongCount, , MinSumve Averageadlı Maxdört sayısal toplama yöntemini de içerir.

Şunlara uygulanır

Aggregate<TSource,TAccumulate>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>)

Kaynak:
Queryable.cs
Kaynak:
Queryable.cs
Kaynak:
Queryable.cs

Bir dizi üzerinde bir biriktirici işlevi uygular. Belirtilen çekirdek değeri ilk biriktirici değeri olarak kullanılır.

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

Tür Parametreleri

TSource

öğelerinin sourcetürü.

TAccumulate

Biriktirici değerinin türü.

Parametreler

source
IQueryable<TSource>

Üzerinde toplanmış bir dizi.

seed
TAccumulate

İlk biriktirici değeri.

func
Expression<Func<TAccumulate,TSource,TAccumulate>>

Her öğede çağrılacak bir biriktirici işlevi.

Döndürülenler

TAccumulate

Son biriktirici değeri.

Özel durumlar

source veya func şeklindedir null.

Örnekler

Aşağıdaki kod örneği, işleve bir çekirdek değeri sağlandığında bir akümülatör işlevini uygulamak için nasıl kullanılacağını Aggregate<TSource,TAccumulate>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>) gösterir.

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.AsQueryable().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
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.AsQueryable().Aggregate( _
        0, _
        Function(ByVal total, ByVal number) _
            IIf(number Mod 2 = 0, total + 1, total) _
    )

MsgBox(String.Format("The number of even integers is: {0}", numEven))

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

Açıklamalar

Bu yöntem, tür bağımsız değişkeni türlerden Expression<TDelegate> biri olan türünde en az bir parametreye Func<T,TResult> sahiptir. Bu parametreler için bir lambda ifadesi geçirebilirsiniz ve bu ifade bir Expression<TDelegate>olarak derlenir.

yöntemi, Aggregate<TSource,TAccumulate>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>) kendisini oluşturulan genel bir MethodCallExpression yöntem olarak çağırmayı Aggregate<TSource,TAccumulate>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>) temsil eden bir oluşturur. Daha sonra parametresinin özelliği tarafından Provider temsil edilen yöntemine IQueryProvidersource iletirMethodCallExpression.Execute<TResult>(Expression)

Çağrıyı Aggregate<TSource,TAccumulate>(IQueryable<TSource>, TAccumulate, Expression<Func<TAccumulate,TSource,TAccumulate>>) temsil eden bir ifade ağacının yürütülmesi sonucunda oluşan sorgu davranışı, parametre türünün uygulanmasına source bağlıdır. Beklenen davranış, funcbelirtilen işlevin kaynak dizideki her değere uygulanması ve birikmiş değerin döndürülmesidir. seed parametresi, içindeki ilk parametreye funckarşılık gelen birikmiş değerin tohum değeri olarak kullanılır.

Yaygın toplama işlemlerini basitleştirmek için, standart sorgu işleçleri Count kümesi iki sayım yöntemi ve ile LongCount, , MinSumve Averageadlı Maxdört sayısal toplama yöntemini de içerir.

Şunlara uygulanır

Aggregate<TSource>(IQueryable<TSource>, Expression<Func<TSource,TSource,TSource>>)

Kaynak:
Queryable.cs
Kaynak:
Queryable.cs
Kaynak:
Queryable.cs

Bir dizi üzerinde bir biriktirici işlevi uygular.

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

Tür Parametreleri

TSource

öğelerinin sourcetürü.

Parametreler

source
IQueryable<TSource>

Üzerinde toplanmış bir dizi.

func
Expression<Func<TSource,TSource,TSource>>

Her öğeye uygulanacak bir biriktirici işlevi.

Döndürülenler

TSource

Son biriktirici değeri.

Özel durumlar

source veya func şeklindedir null.

source öğe içermiyor.

Örnekler

Aşağıdaki kod örneği, dize dizisinden bir cümle oluşturmak için nasıl kullanılacağını Aggregate<TSource>(IQueryable<TSource>, Expression<Func<TSource,TSource,TSource>>) gösterir.

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

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

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

Console.WriteLine(reversed);

// This code produces the following output:
//
// dog lazy the over jumps fox brown quick the
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)

' Use Aggregate() to prepend each word to the beginning of the 
' new sentence to reverse the word order.
Dim reversed As String = _
    words.AsQueryable().Aggregate( _
        Function(ByVal workingSentence, ByVal nextWord) nextWord & " " & workingSentence _
    )

MsgBox(reversed)

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

Açıklamalar

Bu yöntem, tür bağımsız değişkeni türlerden Expression<TDelegate> biri olan türünde en az bir parametreye Func<T,TResult> sahiptir. Bu parametreler için bir lambda ifadesi geçirebilirsiniz ve bu ifade bir Expression<TDelegate>olarak derlenir.

yöntemi, Aggregate<TSource>(IQueryable<TSource>, Expression<Func<TSource,TSource,TSource>>) kendisini oluşturulan genel bir MethodCallExpression yöntem olarak çağırmayı Aggregate<TSource>(IQueryable<TSource>, Expression<Func<TSource,TSource,TSource>>) temsil eden bir oluşturur. Daha sonra parametresinin özelliği tarafından Provider temsil edilen yöntemine IQueryProvidersource iletirMethodCallExpression.Execute<TResult>(Expression)

Çağrıyı Aggregate<TSource>(IQueryable<TSource>, Expression<Func<TSource,TSource,TSource>>) temsil eden bir ifade ağacının yürütülmesi sonucunda oluşan sorgu davranışı, parametre türünün uygulanmasına source bağlıdır. Beklenen davranış, funcbelirtilen işlevin kaynak dizideki her değere uygulanması ve birikmiş değerin döndürülmesidir. içindeki source ilk değer, içindeki ilk parametreye funckarşılık gelen birikmiş değerin tohum değeri olarak kullanılır.

Yaygın toplama işlemlerini basitleştirmek için, standart sorgu işleçleri Count kümesi iki sayım yöntemi ve ile LongCount, , MinSumve Averageadlı Maxdört sayısal toplama yöntemini de içerir.

Şunlara uygulanır