我试图找到一种从同一行中的 Linq 方法访问先前值的方法。
我希望能够在 Linq 中使用这种通用形式:
var values = Enumerable.Range( 1, 100 ).Select( i => i + [last result] );
但是如果没有多行 lambda 并将结果存储在其他地方,我无法找到一种方法来做这样的事情。
所以我在 Linq 中能做的最好的斐波那契总和是:
List<int> calculated = new List<int>( new int[] { 1, 2 });
var fibonacci = Enumerable.Range(2, 10).Select(i =>
{
int result = calculated[i - 2] + calculated[i - 1];
calculated.Add(result);
return result; // and how could I just put the result in fibonacci?
}
);
这看起来很丑陋。我可以用更少的代码用常规的 for 循环来做到这一点。
for (int i = 2; i < 10; i++)
{
calculated.Add(calculated[i - 2] + calculated[i - 1]);
}
似乎如果我能找到一种方法来做到这一点,我可以使用 Linq 来做很多线性规划并总结很多迭代公式。