У меня есть этот запрос для получения данных через Entity Framework, который работает сегодня.Дело в том, что я хочу создать запрос динамически, то есть построить его в блоках, но я не могу понять, как именно это сделать.Я верю, что если я смогу каким-то образом сохранить одно из значений, которые я получаю вначале, я смогу это сделать, но теперь я получаю его дважды (возможно, немного медленнее? Если только компилятор не исправит это до запроса).Имеет смысл?Вот LINQ:
from d in db.trains
where d.cancelled
&& d.station == toStation
&& d.date >= fromDate.Date
&& d.date <= toDate.Date
&& (from k in db.trains
where
k.date == d.date
&& k.trainId == d.trainId
&& k.stationId == fromStation
&& k.position <= d.position
select k.trainId).Contains(d.trainId)
select new
{
trainId = d.trainId,
date = d.date,
arrival = d.arrival,
departure = (from k in db.trains
where
k.date == d.date
&& k.trainId == d.trainId
&& k.stationId == fromStation
&& k.position <= d.position
select k.departure).FirstOrDefault()
}
);
Итак, вы видите, чтобы получить отправление, мне нужно снова получить ту же вещь.Так что я спрашиваю, могу ли я сохранить объект в первом запросе, а затем каким-то образом получить его позже?Я не могу заставить работать синтаксис.
База данных выглядит примерно так:
trainId stationId date arrival departure position
1 99 2010-10-11 10:00 10:10 1
1 98 2010-10-11 11:20 11:30 2
1 47 2010-10-11 12:30 12:40 3
2 99 2010-10-10 15:00 15:10 5
и т. Д.
Итак, мне нужно извлечь два объекта из БД, где первый имеет stationId x идругой имеет stationId y, и оба имеют одинаковую дату и trainId, и они должны быть в правильном порядке, в зависимости от положения (поезда идут в обоих направлениях, но с разными trainId).
Кроме того, я быхотелось бы иметь возможность строить этот запрос динамически, например так:
var trains = from d in db.trains
select d;
if (id > 0)
trains = trains.Where(p => p.trainId == id);
if (date != DateTime.MinValue)
trains = trains.Where(p => p.date == date);
var items = (from train in trains).ToList();
Т.е. в зависимости от того, имеют ли значения различные переменные.