Получите максимум + мин в одной строке с linq - PullRequest
1 голос
/ 10 ноября 2009

Как изменить этот метод, чтобы он также возвращал Max (t.StartTime) и Min (t.StartTime), используя его только в одной строке, как показано ниже?

 public IQueryable<Timetable> GetTimetables()
    {
        return from t in _entities.Timetables
               select t;
    }

/ M

Ответы [ 2 ]

1 голос
/ 10 ноября 2009

С макушки головы (читай: не проверено) и предположим, что 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 обнуляется.

0 голосов
/ 10 ноября 2009

Я не знаю, применимо ли это к платформе Entity, но с linq это примерно так

 public IQueryable<Timetable> GetTimetables()
    {
        return from t in _entities.Timetables
               select new {maxt = Max(t.StartTime), mint = Min(t.StartTime)};
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...