2015-09-02 116 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(); 
相关问题