アイテムの列挙を反復処理し、各要素でこれまでに反復された最小値を返すことができるようにしたいと考えています。
私のコードは次のようになります:
var items = new List<int>{1, 2, -1, 3, -2, 1, 1, 2, -1, -3};
var min = items.First();
var drawdown = items.Select(i =>
{
if(i < min)
{
min = i;
return i;
}
else
{
return min;
}
});
したがって、値については1, 2, -1, 3, -2, 1, 1, 2, -1, -3
結果のリストは次のようになります。
1
1
-1
-1
-2
-2
-2
-2
-2
-3
しかし、これはあまりエレガントではありません。これを行うための読みやすい(linq?)方法はありますか?Aggregate を調べましたが、間違ったツールのようです。最終的に、項目のリストは非常に長くなり、何千もの項目になります。そのため、優れたパフォーマンスが問題になります。