Как я могу изменить этот метод, чтобы он также возвращал Max(t.StartTime) и Min(t.StartTime), используя его только в одной строке, как показано ниже?
public IQueryable<Timetable> GetTimetables()
{
return from t in _entities.Timetables
select t;
}
/M
Ответ 1 · рейтинг 1 · Craig Stuntz
Сверху моей головы (читай: непроверенный) и предполагая, что StartTime не обнуляется:
public class TimetableWithMaxMin
{
public Timetable Timetable { get; set; }
public DateTime Max { get; set; }
public DateTime Min { get; set; }
}
public IQueryable<TimetableWithMaxMin> GetTimetables()
{
return from t in _entities.Timetables
select new TimetableWithMaxMin
{
Timetable = t,
Max = _entities.Timetables.Max(t => t.StartTime),
Min = _entities.Timetables.Min(t => t.StartTime)
};
}
Это становится значительно сложнее, когда StartTime может принимать значение NULL.
Ответ 2 · рейтинг -1 · Omu
Я не знаю, применимо ли это к инфраструктуре Entity, но с linq это что-то вроде этого
public IQueryable<Timetable> GetTimetables()
{
return from t in _entities.Timetables
select new {maxt = Max(t.StartTime), mint = Min(t.StartTime)};
}