C#linq列表找到最接近的数字

Owa*_*med 6 c# linq enumeration list closest

我有一个数字列表,我想找到最接近四个数字的搜索号码.

例如,如果搜索号是400000,并且列表是:{150000, 250000, 400000, 550000, 850000, 300000, 200000),那么最接近的4个数字将是:

{300000, 400000, 250000, 550000}
Run Code Online (Sandbox Code Playgroud)

任何帮助或建议将不胜感激.

Mis*_*akw 15

您可以使用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));
Run Code Online (Sandbox Code Playgroud)

输出: {400000, 300000, 250000, 550000}

  • 并且,如果你想要_"价格是正确的"_规则(最接近而没有经过),你需要改变的就是lambda. (2认同)