Linq技巧1——关联实体查询排序_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > Linq技巧1——关联实体查询排序

Linq技巧1——关联实体查询排序

 2013/10/25 22:47:05  欣静赏悦  博客园  我要评论(0)
  • 摘要:假如想查询拖欠按揭超过30天的银行帐号,同时查询出他们的单据,并且需要按照单据日期进行排序,这样可以首先看到最近的单据,方便找出问题。大多数人都知道EF可以使用Include()热加载关系实体,例如这样:varlateCustomers=fromcinctx.Customers.Include("Orders")wherec.IsMoreThan30DaysInArrearsselectc;但是很不幸,这样找到的每个客户的单据顺序都是随机的。那么我们怎么来对他们进行排序呢,严格讲那是没有答案的
  • 标签:技巧

  假如想查询拖欠按揭超过30天的银行帐号,同时查询出他们的单据,并且需要按照单据日期进行排序,这样可以首先看到最近的单据,方便找出问题。

  大多数人都知道EF可以使用Include()热加载关系实体,例如这样:  

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

  但是很不幸,这样找到的每个客户的单据顺序都是随机的。

  那么我们怎么来对他们进行排序呢,严格讲那是没有答案的。

  但是我们可以稍微做些改变,如干掉Include,使用查询语句。  

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

  这样做使用了标准的Linq语义来枚举查询匿名类型,这样做达到了两个效果:顾客和他的有序单据。

  EF对此支持的很好,这样问题就解决了。

  

 

发表评论
用户名: 匿名