Вы можете использовать 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}