我希望能够迭代项目的枚举,并在每个元素处返回迄今为止迭代的最小值。
我的代码如下所示:
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 ,但它似乎是错误的工具。最终,项目列表将非常长,有数千个。所以良好的性能将是一个问题。