我有一个数字列表,我想获得下一个 >=
数字而不是我传递的数字,但是当我将更大的值传递给列表中最大的值时会出现问题。例如,当我传递 41
并且列表中最大的是 40 时,它将不起作用,所以我希望它返回 40。
var numbers = new[] {30, 20, 40};
我希望它像这样工作:
numbers.GetNearest(45) -> 40
numbers.GetNearest(40) -> 40
numbers.GetNearest(31) -> 40
numbers.GetNearest(30) -> 30
numbers.GetNearest(29) -> 30
numbers.GetNearest(1) -> 20
这是否可以单独使用 LINQ,或者是否有任何众所周知的算法?
我现在拥有的是这样的:
numbers.OrderBy(n => n).FirstOrDefault(n => n >= minute)
但是当我传递大于 40 的值时它不起作用
我不想要最接近的数字,但下一个 >=
比我通过的那个要大,但是对于某些比列表中最大的数字更大的数字将不起作用,所以我想只返回最后一个。
最佳答案
用 DefaultIfEmpty()
定义特殊情况
var numbers = new[] { 30, 20, 40 };
Array.Sort(numbers);
int result = numbers.Where(n => n >= minute).DefaultIfEmpty(numbers.Last()).First();
关于c# - 在特定条件下使用 LINQ 从列表中获取数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52552221/