同じ行の Linq メソッドから以前の値にアクセスする方法を見つけようとしています。
Linq でこの一般的な形式を使用できるようにしたい:
var values = Enumerable.Range( 1, 100 ).Select( i => i + [last result] );
しかし、複数行のラムダを使用せずに結果を別の場所に保存しないと、このようなことを行う方法を見つけることができません。
したがって、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 を使用して多くの線形プログラミングを実行し、多くの反復式を合計できるようです。