我有一个数字列表,我想找到与搜索号码最接近的四个数字。
例如,如果搜索号码为400000
,列表为:{150000, 250000, 400000, 550000, 850000, 300000, 200000)
,则最接近的4个数字为:
{300000, 400000, 250000, 550000}
任何帮助或建议将不胜感激。
答案 0 :(得分:15)
您可以使用OrderBy
通过每个项目与您的搜索词之间的差的绝对值对列表进行排序,从而使已排序列表中的第一个项目最接近您的数字,而最后一个项目是离数字最远。然后,您可以使用Take
扩展方法获取所需的项目数:
cdef public void setStatus(MyStatus& status):
cdef MyStatus * as_ptr = &status
as_ptr[0] = <const char *>"FOO"
输出: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));