int [] testArray = new int[3] { 5, 7, 8};
int check = 22;
var nearest = testArray.Min(x => Math.Abs(x - check));
Debug.Print(Convert.ToString(nearest));
У меня есть код выше как попытка попытаться получить ближайший номер в массиве, ближайшем к контрольному номеру, в этом случае 22.Получить наиболее близкое значение в массиве
Дела в том, что это всегда возвращает положительное значение из-за Math.Abs, но если я удалю это, код полностью не удастся. например, если номер проверки равен 10, я хочу, чтобы ближайший к возврату -2, а не 2. Таким образом, я могу просто добавить ближайшее значение к номеру проверки, чтобы получить правильное значение, находящееся в массиве.
я нашел что-то похож на поиск, что называется MoreLinq, что предложил использовать вместо array.MinBy, однако этот метод выдает ошибку (говорит, что это не существует) ... Спасибо
Вы хотите получить номер в массиве, который наиболее близка к вашему номеру или расстоянию до этого номера? Название предполагает, что вы хотите, чтобы 22 приводило к 8 в результате, однако ваши объяснения и код выглядят скорее как ожидающие (-) 14. – wkl
MoreLinq - это расширение Linq. Вы можете получить его от менеджера пакетов nuget. Проверьте https://morelinq.github.io/ – Tejus
@wkl идея состоит в том, чтобы получить 8, однако я пытался достичь этого, сначала получив расстояние, а затем добавив его к исходному числу, чтобы получить его в массиве. –