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