Scan
Applies the folder function to each element of the collection, threading an accumulator argument through the computation. Take the second argument, and apply the function to it and the first element of the collection.
Then feed this result into the function along with the second element and so on. Returns the collection of intermediate results and the final result.
This method is similar to Fold, but in this case the intermediate results are returned as well.
Parameters
Returns
Func<TState, T, TState> folder
TState state
IEnumerable<T> source
TState
Usage
Accumulating an individual property of each element through a collection
//IEnumerable<Animal> source =
// { ("Cats",4), ("Dogs",5), ("Mice",3), ("Elephants",2) }
int result = source.Scan( 6, (_state, element) => _state + element.Item2);
//result = { 10, 15, 18, 20}When the type of elements in your collection are: int, decimal, double, string or bool you can also use this function combined with the Operations described in operations section as folder functions.
Using an operation as a folder
//IEnumerable<int> source = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }
int result = source.Scan(10, IntegerOperations.Add);
//result = {11, 13, 16, 20, 25, 31, 38, 46, 55, 65}Last updated
Was this helpful?