数组得到的最小值大于其他值

时间:2013-01-09 15:30:16

标签: c# linq

我有以下数组:

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

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

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

4 个答案:

答案 0 :(得分:21)

使用LINQ方法Where过滤掉零值,然后使用LINQ方法Min检索生成的集合的最低值。

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

答案 1 :(得分:4)

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

array.Where(a => a > 1 && a < 10).Min();

答案 2 :(得分:3)

尝试使用Where过滤器;

  

根据谓词过滤一系列值。

使用Min()方法后。

  

返回值序列中的最小值。

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

这是一个DEMO

答案 3 :(得分: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();