#c# #linq
#c# #linq
Вопрос:
У меня есть 2 бизнес-объекта, trip и driver. Каждый содержит идентификатор драйвера и дату драйвера (ММ / ДД / ГГГГ)
У Trip может быть несколько одинаковых драйверов.в нем есть driverid. Мне нужно получить ближайший экземпляр driver.driverid в trips к драйверу, в котором я сейчас нахожусь.
Итак, например, у меня пока есть следующее:
var lookup = driver.driverid;
Это текущий драйвер, на который я смотрю (используя foreach для просмотра объекта drivers 1 на 1)
Теперь мне нужно сказать, получить самый последний объект trip, который имеет тот же идентификатор драйвера и ближайшую, но не равную прошлую дату. Если такой объект не существует, выйдите из метода.
Спасибо
Комментарии:
1. Я не был уверен, как я буду это делать, поскольку у меня еще не было никакого опыта с чем-либо, использующим order by в LINQ.
Ответ №1:
Используя LINQ, вы могли бы сделать что-то вроде этого (при условии, что ваша структура объекта);
var selectedTrip = trips.Where(x => x.DriverId == desiredDriverId amp;amp; x.TripDate > desiredDate).OrderBy(x => x.TripDate).FirstOrDefault();
if(selectedTrip == null)
return;
// selectedTrip is your desired object
Комментарии:
1. Будет ли это x.TripDate > Желаемая дата или > должно быть < здесь, потому что я действительно хочу, чтобы x.TripDate был меньше текущей даты драйвера?
2. Не зная структуру вашего объекта и дату, которую вы на самом деле хотите, вы можете просто поиграть с этим.