我希望你能在同一行中找到一种访问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来执行大量的线性规划和总结很多迭代公式。