public static TResult Aggregate <TSource, TAccumulate, TResult>(this List <TSource> source, TAccumulate seed, Func <TAccumulate, TSource, TAccumulate> func, Func <TAccumulate, TResult> resultSelector) { var aggregate = new FoldForward <TSource, TAccumulate>(func, seed); ListSegmentNode.ProcessList(source, ref aggregate); return(resultSelector(aggregate.GetResult())); }
public static TResult Aggregate <TSource, TAccumulate, TResult>(this ReadOnlyMemory <TSource> source, TAccumulate seed, Func <TAccumulate, TSource, TAccumulate> func, Func <TAccumulate, TResult> resultSelector) { var aggregate = new FoldForward <TSource, TAccumulate>(func, seed); MemoryNode.ProcessMemory(source, ref aggregate); return(resultSelector(aggregate.GetResult())); }
public static TAccumulate Aggregate <TSource, TAccumulate>(this TSource[] source, TAccumulate seed, Func <TAccumulate, TSource, TAccumulate> func) { var aggregate = new FoldForward <TSource, TAccumulate>(func, seed); ArrayNode.ProcessArray(source, ref aggregate); return(aggregate.GetResult()); }