获取LAST order失败的所有成员



我正在学习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

,然后得到这个stackoverflow答案中建议的First或FirstOrDefault。

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

通常你会这样写:

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关系

相关内容

  • 没有找到相关文章

最新更新