Группировка и множественное упорядочение с использованием Linq to Entities

У меня есть эти два объекта:

public class Course
{
    public int Id { get; set; }
    public string Name { get; set; }
    public DateTime StartDate { get; set; }
    public DateTime EndDate { get; set; }
    public virtual ICollection<Class> Classes { get; set; }
}

public class Class
{
    public int Id { get; set; }
    public string Name { get; set; }
    public DateTime StartTime { get; set; }
    public DateTime EndTime { get; set; } ]
    public Course Course { get; set; }
}

Теперь мне нужно перечислить каждую группу классов по курсу и упорядочить по (по убыванию)Course.StartDate, а затем по Class.StartTime. Я могу сгруппировать по курсу и упорядочить по Course.StartDate :

var myList = context.Classes
   .GroupBy(c => c.Course)
   .OrderByDescending(g => g.Key.StartDate).ToList()

, но не могу также упорядочить каждый класс по его StartTime. Я пробовал это:

var myList = context.Classes
   .OrderBy(c => c.StartTime)
   .GroupBy(c => c.Course)
   .OrderByDescending(g => g.Key.StartDate).ToList()

И даже это:

var myList = context.Classes
   .GroupBy(c => c.Course)
   .OrderByDescending(g => g.Key.StartDate)
   .ThenBy(g => g.Select(c => c.StartTime)).ToList()

Но классы никогда не упорядочиваются по времени начала.

*Изменить для лучшего разъяснения:Это для WebService, и я должен вернуть List<IGrouping<Course, Class>>, и мне действительно нужен элегантный способ сделать это (, т.е. используя только Linq), без создания списка вручную. Если конечно нельзя.

Приветствуется любая помощь. (Я использую код EF -first 4.3 btw ).

6
задан Henrique Miranda 10 April 2012 в 16:23
поделиться