Entity Framework Tip 1 - 如何在Entity Framework里排序关系

问题:

 

举个例子比如你要查询customers并只返回那些账户欠款超过30天, 并同时检索他们的订单.

而且你需要那些订单按照订单日期排序,因此你可以看到最近的一笔订单,这样你容易查找那些可以的订单.

回答:

你大概知道EF可以用Incude()载入一个关系,举个例子如下:

var lateCustomers = from c in ctx.Customers.Include("Orders")
                    where c.IsMoreThan30DaysInArrears
                    select c;

但不幸的是,这将返回每个客户的订单中随机顺序。

所以你怎么样呢?以及严格地说没有答案。

但是,你可以将订单排序包括在SELECT子句:

var lateCustomers = from c in ctx.Customers
                where c.IsMoreThan30DaysInArrears
                select new
                    Customer = c, 
                    Orders = c.Orders.OrderByDescending(
                                 o => o.OrderDate
                             ) 
                }; 

 

 

共有0个回答