Re: LINQ - Как получить частичные суммы ряда?
От: SteckInc  
Дата: 07.09.09 05:58
Оценка:
Здравствуйте, 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));
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.