gpt4 book ai didi

c# - 在特定条件下使用 LINQ 从列表中获取数字

转载 作者:太空宇宙 更新时间:2023-11-03 17:48:11 24 4
gpt4 key购买 nike

我有一个数字列表,我想获得下一个 >= 数字而不是我传递的数字,但是当我将更大的值传递给列表中最大的值时会出现问题。例如,当我传递 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();

测试用例:https://dotnetfiddle.net/nIEsRO

关于c# - 在特定条件下使用 LINQ 从列表中获取数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52552221/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com