2015-09-02 159 views
0

我有一個Order類,它由許多屬性組成,其中之一是CourseCourse對象包含一列MeetingDays。 每個MeetingDay對象包含許多屬性,其中之一是StartDatec#LINQ按屬性的子屬性對列表進行排序,屬性是對象列表

現在我想排序(OrderBy)訂單列表,訂購它的StartDate屬性MeetingDay

由於一個訂單可以有多個MeetingDays:我也有一個日期,我只想按每個等於日期參數的訂單排序MeetingDay

所以,如果一個訂單在上午10點開始,並在下午2點結束,我希望它在我的列表中訂購,另一個訂單在下午3點開始,並在下午6點結束。

編輯

這將是很好,如果這樣的事情是可能的:

var sortedOrders = orders.OrderBy(x => x.Course.MeetingDays.StartDate.Date == date.Date).ToList(); 
+1

從你的描述猜測,會是這樣的工作? 'myOrders.OrderBy(order => order.Course.MeetingDays.First()。StartDate)'? –

+0

我更新了我的問題,因爲課程可以包含多個MeetingDays,但我只想對MeetingDate進行排序,其中MeetingDate.StartDate等於日期參數。 – WulfgarDK

+0

聽起來像'myOrders.OrderBy(order => order.Course.MeetingDays.First(day => day.StartDate.Date == date.Date).StartDate)'。 'myOrders' **中的每個'order'都保證**包含'DateDay'與Date.Date具有相同的'Date'?如果不是,你想過濾這些命令嗎? – olydis

回答

0

由於(根據評論),你保證,每個order包含一個MeetingDay塔牛逼你一天比賽,下面的表達式將完成你想要什麼:

var sortedOrders = myOrders 
    .OrderBy(order => order 
     .Course 
     .MeetingDays 
     .Single(day => day.StartDate.Date == date.Date) 
     .StartDate) 
    .ToList(); 

應該,沒想到,會有零個或多個匹配MeetingDay,異常將在調用Single被拋出。

0

這隻會工作,如果只有一個MeetingDay.StartDate比賽日期:

var sortedOrders = orders.OrderBy(x => x.Course.MeetingDays.Single(y => y.StartDate.Date == date.Date).StartDate).ToList(); 
相關問題