C # linq список найти ближайшие номера - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть список номеров, и я хочу найти четыре ближайших номера к поисковому номеру.

Например, если номер поиска 400000 и список: {150000, 250000, 400000, 550000, 850000, 300000, 200000), то ближайший4 числа будут:

{300000, 400000, 250000, 550000}

Буду признателен за любую помощь или предложение.

1 Ответ

0 голосов
/ 06 февраля 2019

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

...