Как использовать самостоятельно определенную агрегатную функцию с LINQ? (без использования методов расширения) - PullRequest
0 голосов
/ 20 марта 2020

В вопросе Вычислите сумму чисел от 1 до n, используя LINQ , сумма функции уже существовала, что делать, когда мы хотим определить нашу собственную функцию? например, функция SquareSum, куда нужно добавить квадрат чисел, или какую-то другую несуществующую функцию?

Редактировать: прокомментировано использование метода расширения, я на самом деле искал способ сделать это без методы расширения.

Ответы [ 2 ]

0 голосов
/ 20 марта 2020

Пожалуйста, попробуйте следующее.

Если у вас уже есть тип IEnumerable, который содержит числа, вам не нужны никакие методы расширения. Вы можете напрямую использовать метод агрегирования расширений, как показано ниже.

num.Aggregate((a, b) => (a * a) + (b * b));

Редактировать: Folks, Мои извинения за неправильный ответ (num.Aggregate((a, b) => (a * a) + (b * b));). Я только отправил это без попытки. Один джентльмен уже опубликовал правильный ответ. Однако я нахожу еще один способ для того же вывода

 num.Select(x => x * x).Sum();
0 голосов
/ 20 марта 2020

Вы можете написать это так

IEnumerable<int> range = Enumerable.Range(1, n);
var sum = range.Aggregate(0, (x, y) => x + y);

Сумма квадратов:

IEnumerable<int> range = Enumerable.Range(1, n);
var sum = range.Aggregate(0, (x, y) => x + y * y);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...