Разница между суммой и суммой в LINQ

Какова разница между двумя функциями: Sum/Aggregate?

Ответ 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