zoukankan      html  css  js  c++  java
  • Linq技巧1——关联实体查询排序

      假如想查询拖欠按揭超过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对此支持的很好,这样问题就解决了。

      

    出处: http://www.cnblogs.com/windy2008

  • 相关阅读:
    信号量
    队列 Queue JoinableQueue
    process 多进程写法 multiprocessing
    socketserver
    scokte tcp/ip
    线程池或进程池的回调函数
    gevent 真正的协程
    巨蟒python全栈开发flask12项目开始4
    巨蟒python全栈开发flask11项目开始3
    巨蟒python全栈开发flask10 项目开始2
  • 原文地址:https://www.cnblogs.com/windy2008/p/3388182.html
Copyright © 2011-2022 走看看