我想找到一种方法来访问同一行中的Linq方法的以前的值。与Linq迭代
我希望能够在LINQ to使用一般形式:
var values = Enumerable.Range(1, 100).Select(i => i + [last result]);
但我不能找到一种方法,做这样的事情没有多行拉姆达的和存储的结果在其他地方。
所以最好的总和斐波纳契我已经能够在LINQ to做的是:
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做了很多的线性规划,总结了很多迭代公式。
LINQ是缩写词的最后一个字母,代表查询。不是为了计算......不要把它硬塞进它不是的东西。 – Oded
@Oded:那可能是“答案”。我仍然在努力学习Linq的界限。我可以想到2次面试,我可以说你做了什么(尽管温和一点)。你能提交这个答案吗? – micahhoover