Здравствуйте, Northrop, Вы писали:
N>Есит ряд:
N>1, 2, 3, 4, ..... n
N>Надо через LINQ получить из него ряд частичных сумм:
N>1, 3, 6, 10, ... m
N>Как это сделать?
Может быть задачу можно решить проще если применить хитрость. Например для описанного случая это будет
var nums = new[] {1, 2, 3, 4, 5, 6, 7, 8, 9};
var sums = nums.Select(n => n * (n + 1) / 2);
А если всё-же общий случай, то придтся немного помудрить.
Вполне через Linq но не совсем быстро, ибо суммируем много раз одно и тоже.
private static IEnumerable<int> GetNumbers()
{
int i = 1;
while (true)
{
yield return i++;
}
}
var nums = new[] {1, 2, 3, 4, 5, 6, 7, 8, 9};
var sums = GetNumbers().Take(nums.Length).Select(x => nums.Take(x).Aggregate(0,(a, b) => a + b));