C# 数组中最近的低值

C# 数组中最近的低值,c#,arrays,linq,C#,Arrays,Linq,我需要得到数组中最近的值,但是,我需要它是低选项而不是高选项 例如 结果应该是1.0,而不是1.5,这将是最接近的换句话说,您希望所有元素的最大值小于或等于NewValue double nearest = array.Where(x => x <= NewValue).Max<double>(); 下面的代码段将使用标准LINQ工作: var nearestBelow = newValue - array.Where(n => n <= newValue)

我需要得到数组中最近的值,但是,我需要它是低选项而不是高选项 例如


结果应该是1.0,而不是1.5,这将是最接近的

换句话说,您希望所有元素的最大值小于或等于NewValue

double nearest = array.Where(x => x <= NewValue).Max<double>();

下面的代码段将使用标准LINQ工作:

var nearestBelow = newValue - array.Where(n => n <= newValue)
                                  .Min(n => newValue - n);

所以你想要比给定的数字低的最近值?数组总是排序的吗?我想你已经试过了,是吗?如果你能证明这一点,那就太好了。这将更容易帮助您理解错误所在。如果该数字小于数组中的最小值,该怎么办?一个好的起点是思考如何得出1.0作为答案,然后从那里开始,试着按照你所用的相同思维步骤编写代码。所有的值都更大吗?@o_weisman:如果我正确地阅读了问题,那么就没有答案了。所以这不是问题。扫描两次似乎很遗憾:var nearest=array.Aggregatea,t=>a=tvar nearestBelow = newValue - array.Where(n => n <= newValue) .Min(n => newValue - n);