c # упорядочить по расстоянию от координат - PullRequest
0 голосов
/ 23 мая 2018

Я пытаюсь понять, как получить максимально близкую линию к заданной координате.

Линия - это массив координат типа LatLng.LatLng имеет два свойства Latitude и Longitude, а также метод, который вычисляет расстояние от текущего LatLng до другого, переданного в значении.Мой список строк выглядит следующим образом:

IEnumerable<LatLng[]> lines.

Давая координату LatLng, как мне найти ближайшую возможную линию к координате.

Я пытался:

lines.OrderBy(line => line.Select(x => x.Distance(coordinate))).First();

Я получаю сообщение об ошибке «Хотя бы один объект должен реализовывать IComparable.».Я знаю, что LatLng не реализует это, но я не пытаюсь сравнивать это.Я пытаюсь упорядочить расстояния, а затем выбрать ближайший.

1 Ответ

0 голосов
/ 23 мая 2018

Поскольку у вас есть вложенный перечисляемый класс LatLng, вам нужно вернуть числовое значение из внутренней части вашей лямбды, и, как вам кажется, вы пытаетесь упорядочить внешний список с помощьюрасстояние ближайшего элемента во внутреннем списке, это должно сделать работу:

var orderedList = lines.OrderBy(line => 
    line.Select(x => 
        x.Distance(coordinate))
        .Min());

На самом деле вы можете упростить это, удалив Select и поместив лямбду внутри Min:

var orderedList = lines.OrderBy(line => 
    line.Min(x => x.Distance(coordinate)));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...