Chu*_*Tey 3 c# linq functional-programming
假如我有这样的数字列表,
   [3, 3, 1, 2, 3, 2]
我想按顺序将它们组合在一起,使每组的总和小于或等于5,即正确的答案是:
  [3], [3, 1], [2,3], [2]
有没有办法用Linq表达这个?
简单.
var results = xs.Aggregate<int, List<List<int>>>(
    new List<List<int>> { new List<int>() },
    (a, n) =>
    {
        if (a.Last().Sum() + n > 5)
        {
            a.Add(new List<int> { n });
        }
        else
        {
            a.Last().Add(n);
        }
        return a;
    });
所以,从这个:
var xs = new [] { 3, 3, 1, 2, 3, 2, };
我明白了:
