LINQ:获取最后订单的所有成员失败

时间:2015-05-27 08:17:18

标签: asp.net linq entity-framework

我正在学习LINQ,我正在试图弄清楚如何让最后一个订单的所有成员都失败(每个成员可以有很多订单)。出于效率原因,我想在LINQ中将其全部放入列表中,如果可能的话。

到目前为止,我认为这是让所有成员获得最近加入的失败订单的正确方法(cutoffDate是当前日期-10天)。

var failedOrders =
 from m in context.Members
 from o in context.Orders
 where m.DateJoined > cutoffDate
 where o.Status == Failed
 select m;

我希望我需要使用Last或LastOrDefault,或者我可能需要使用

orderby o.OrderNumber descending

然后按照this stackoverflow回答中的建议获取First或FirstOrDefault。

请注意,我只想查看给定成员的最后一个订单,看看是否失败了(不只是找到最后一个失败的订单)。

1 个答案:

答案 0 :(得分:1)

通常你会写一些类似的东西:

var failedOrders = from m in context.Members
                   where m.DateJoined > cutoffDate
                   select new
                   {
                       Member = m,
                       LastOrder = m.Orders.OrderByDescending(x => x.OrderNumber).FirstOrDefault()
                   } into mlo
                   // no need for null checks here, because the query is done db-side
                   where mlo.LastOrder.Status == Failed 
                   select mlo; // or select mlo.Member to have only the member

如果存在Members.Orders关系