5

我有以下数组:

float[] arr = { 0, 0.1f, 0, 0.1f, 0, 0.2f };

选择大于0或大于其他值的最小值的最优雅方法是什么?

我试过使用Min()Select...From...OrderBy...First()但直到现在还没有运气。

4

4 回答 4

22

使用 LINQ 方法Where过滤掉零值,然后使用 LINQ 方法Min检索结果集合的最小值。

arr.Where(f => f > 0).Min();
于 2013-01-09T15:31:56.427 回答
4

您可以使用排除值Where,然后应用Min

array.Where(a => a > 1 && a < 10).Min();
于 2013-01-09T15:32:03.493 回答
3

尝试使用Where过滤器;

根据谓词过滤一系列值。

以及使用后Min()的方法。

返回值序列中的最小值。

arr.Where(a => a > 0).Min();

这是一个DEMO.

于 2013-01-09T15:32:36.757 回答
2

如果所有数据都小于您的“其他值”,则所有当前答案都会出现异常。因此,如果这不是您想要的,您将null在这种情况下使用以下代码:

float[] arr = { 0, 0.1f, 0, 0.1f, 0, 0.2f };
var someOtherValue = 0;

var min = arr.Where(x => x > someOtherValue)
            .Cast<float?>()
            .Min();
于 2013-01-09T15:37:21.223 回答