[英]c# LINQ sort a list by a subproperty of a property that is a list of objects
我有一个Order
类,它包含许多属性,其中一个是Course
。 Course
对象包含MeetingDays
的列表。 每个MeetingDay
对象包含许多属性,其中之一是StartDate
。
现在,我想排序( OrderBy
)订单列表,通过MeetingDay
的StartDate
属性对其进行MeetingDay
。
由于一个订单可以具有多个MeetingDays
:我也有一个日期,并且我只想按与date参数相等的每个订单按MeetingDay
进行排序。
因此,如果一个订单从上午10点开始到下午2点结束,我希望它在我的列表中先于另一个订单从下午3点开始到下午6点结束。
编辑
如果可能的话,这将是很好:
var sortedOrders = orders.OrderBy(x => x.Course.MeetingDays.StartDate.Date == date.Date).ToList();
仅在一个MeetingDay.StartDate匹配日期正好一个日期时有效:
var sortedOrders = orders.OrderBy(x => x.Course.MeetingDays.Single(y => y.StartDate.Date == date.Date).StartDate).ToList();
由于可以保证(根据评论)每个order
包含与给定日期匹配的MeetingDay
,因此以下表达式将完成您想要的事情:
var sortedOrders = myOrders
.OrderBy(order => order
.Course
.MeetingDays
.Single(day => day.StartDate.Date == date.Date)
.StartDate)
.ToList();
出乎意料的是,如果存在零个或多个匹配的MeetingDay
,则对Single
的调用将引发异常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.