3

私はこれらのオブジェクトを持っています:

public class Class
{
     public Guid Id {get;set;}
     public string Name {get;set;}
     public virtual ICollection<Schedule> Schedules{get;set;}
}

public class Schedule
{
     public Guid Id {get;set;}
     public virtual DayOfTheWeekId {get;set;}
     public virtual DayOfTheWeek {get;set;}
     public DateTime StartTime {get;set;}
     public DateTime EndTime {get;set;}
}

現在のクエリは次のようになりますが、次の例外が発生します。少なくとも 1 つのオブジェクトが IComparable を実装する必要があります。:

    Repository
.Get(c => c.Schedules.Any(s => s.DayOfTheWeekTypeId == dayOfTheWeekId))
.OrderBy(e => e.Schedules.OrderBy(s => s.StartDateTime)).ToList()

時間を設定するときは、特定の曜日にクラスを表示する必要があるため、常に同じ日を使用します。そこで、DayOfTheWeek オブジェクトの出番です。これは私が時間を設定する方法です:

var schedule = new Schedule{
                           StartDateTime = new DateTime(1999,1,1) + new TimeSpan(9, 15, 0),
                           EndDateTime = new DateTime(1999,1,1) + new TimeSpan(9, 15, 0),
                           DayOfTheWeekTypeId = 1
                           }

アップデート:

そう考えると、グループ化したいかも…。

4

1 に答える 1

8

あなたはシーケンスで注文しようとしています。それは一体何の意味ですか?

たとえば、スケジュールの最初のイベントで並べ替える方が理にかなっています。

.OrderBy(e => e.Schedules.Min(s => s.StartDateTime))

それが機能するかどうかはわかりませんが少なくともより理にかなっています。(LINQ to Objects で動作しますが、EF についてはわかりません。)

于 2012-06-14T20:43:32.410 に答える