Какова разница между двумя функциями: Sum/Aggregate?
Разница между суммой и суммой в LINQ
Ответ 1
Вы можете по существу думать о сумме как о конкретном типе агрегата, но есть много других типов.
Некоторые примеры Aggregate могут состоять в том, чтобы умножить каждое отдельное значение или добавить строки, а не числа.
Причина, по которой Sum существует в дополнение к Aggregate, просто состоит в том, что Sum является одним из наиболее распространенных типов функций Aggregate, поэтому было бы полезно добавить дополнительную функцию для этого случая.
Ответ 2
Операция Sum
является специализацией Aggregate
. Операция Aggregate
- это способ свертывания коллекции в одно значение, применяя делегат, который уменьшает пару значений в одно значение. Sum
по существу вызывает Aggregate
с помощью функции +
/operator
Ответ 3
Aggregate
намного более гибкий. Его можно использовать для большого числа типов (например, для создания строк). Sum
имеет очень специфическую цель (добавить числа).
Ответ 4
Метод Sum в Linq Работает только с числовым типом данных (int, float и т.д.), Где в качестве метода Aggregate можно использовать как числовой тип данных, так и строковый тип данных.
string[] countries = { "Brazil", "Argentina", "England", "Spain"};
string result = countries.Aggregate((a, b) => a + ", " + b);
//result="Brazil,Argentina,England"
int[] Numbers = { 2, 3, 4 };
int aggregate= Numbers.Aggregate((a, b) => a * b);
//aggregate=24