我有这两个实体:
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()
但是这些类永远不会按它的 StartTime 排序。
*为更好地说明而编辑:这是针对 WebService 的,我必须返回 aList<IGrouping<Course, Class>>
并且我真的想要一种优雅的方式来执行此操作(即仅使用 Linq),而无需手动创建列表。除非当然不可能。
任何帮助都将不胜感激(我使用的是 EF 代码优先 4.3 顺便说一句)。