Справка по запросу LINQ (LINQ to SQL) - PullRequest
1 голос
/ 04 июня 2009

Я не очень знаком с LINQ, но в настоящее время я работаю над проектом ASP.NET и использую LINQ to SQL в качестве ORM (я создаю приложение для планирования маршрута). У меня проблема с созданием запроса так, как он мне нужен, поэтому, возможно, кто-нибудь подскажет, как этого добиться. Мой текущий запрос выглядит так:

var results = from lift in db.Lift
              where lift.StartTime > DateTime.Now
                    && lift.Route.Stop.Any(o => o.Location.Name.ToLower().Contains(origin))
                    && lift.Route.Stop.Any(d => d.Location.Name.ToLower().Contains(destination))
              select lift;

Этот запрос работает и выполняет свою работу. Мне понадобится следующее расширение: у каждого Стопа есть поле с названием Порядок, которое определяет ордер Стоп в конкретном маршруте. В моем запросе должны быть выбраны все Лифты, у которых у Маршрутов есть Остановки, которые соответствуют порядку и пункту назначения (именно так поступает запрос) И где Стоп источника имеет более низкий номер Порядка, чем Стоп назначения. Могу ли я сделать это с помощью LINQ или после этого мне нужно отфильтровать результаты?

Спасибо заранее, Mathias

1 Ответ

2 голосов
/ 04 июня 2009

С макушки головы .. попробуйте что-то вроде этого (возможно, можно упростить):

var results = from lift in db.Lift
              let originStop = lift.Route.Stop.
                  FirstOrDefault(o => o.Location.Name.ToLower().Contains(origin))
              let destinationStop = lift.Route.Stop.
                  FirstOrDefault(d => d.Location.Name.ToLower().Contains(destination))
              where lift.StartTime > DateTime.Now
                    && originStop != null
                    && destinationStop != null
                    && originStop.OrderNumber < destinationStop.OrderNumber
              select lift;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...