如何仅获取值之后的数组最近值的那一部分

时间:2018-10-18 19:49:18

标签: c# .net

我有一个C#数组,包含1、2和3.3。我只想显示最接近的值,但是在X之后(在这种情况下为1.3)将使该值显示为2。如何在未排序的数组中实现该值?

5 个答案:

答案 0 :(得分:2)

您可以使用以下LINQ查询(假设数组已排序):

var array = new [] {1, 2, 3.3};
var x = 1.3;
var result =  array.SkipWhile(e => e < x).First();

或者,如果数组未排序:

var result = array.Where(e => e >= x).Min();

答案 1 :(得分:1)

for (int i = 0; i < arr_size; i++){
    if (num_your_looking_for <= arr[i])
        return arr[i]
}

答案 2 :(得分:1)

您可以通过按所需编号的每个商品的差额进行订购,第一个(最小差额)为您的编号:

double answer = theArray.Where(a => a >= x).Min();

double answer = theArray.OrderBy(a => a)
          .SkipWhile(a => a < X).First();

答案 3 :(得分:1)

您需要获取大于给定值的最小数组值。

var value = 1.3;
var closest = array.Where(item => item > value)
                   .Min();

答案 4 :(得分:1)

  

...在这种情况下为1.3,该值将显示为2

如果只希望下一个大于1.3的元素:

public static T FirstAfter<T>(this IEnumerable<T> collection, T item) where T : IComparable =>
    collection.First(x => x.CompareTo(item) == 1);

var array = new[] {1, 2, 3.3};
var whatYouWant = array.FirstAfter(1.3);