我有一个数字列表,想要找到与搜索数字最接近的四个数字。
例如,如果搜索数字为400000
,列表为:{150000, 250000, 400000, 550000, 850000, 300000, 200000)
,则最接近的4个数字将是:
{300000, 400000, 250000, 550000}
非常感谢您的帮助和建议。
我有一个数字列表,想要找到与搜索数字最接近的四个数字。
例如,如果搜索数字为400000
,列表为:{150000, 250000, 400000, 550000, 850000, 300000, 200000)
,则最接近的4个数字将是:
{300000, 400000, 250000, 550000}
非常感谢您的帮助和建议。
OrderBy
来按照每个项与您的搜索项之间差值的绝对值进行排序,以便有序列表中的第一项最接近您的数字,最后一项最远离该数字。然后,您可以使用Take
扩展方法来获取所需的项目数:var list = new List<long> {150000, 250000, 400000, 550000, 850000, 300000, 200000};
var search = 400000;
var result = list.OrderBy(x => Math.Abs(x - search)).Take(4);
Console.WriteLine(string.Join(", ", result));
输出: {400000, 300000, 250000, 550000}
OrderBy
。OrderByDescending
会将差异最大的项目放在最前面。 - Rufus L