私はこの2つのエンティティを持っています:
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 ごとにグループ化された各 Class をリストし、Course.StartDate の順 (降順)、次に Class.StartTime の順に並べる必要があります。Course ごとにグループ化し、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用でありList<IGrouping<Course, Class>>
、リストを手動で作成せずに、これを行うエレガントな方法(Linqのみを使用)が本当に必要です。もちろん、それが不可能でない限り。
どんな助けも感謝しています(私はEFコードファースト4.3 btwを使用しています)。