首页 > 数据库技术 > 详细

LINQ SQL分组取最近一条记录

时间:2015-05-20 12:53:16      阅读:580      评论:0      收藏:0      [点我收藏+]

  最近项目有一个需求,从订单表查询出每个客户最近一条订单记录。数据库表结构如下图

技术分享

             SELECT * FROM (

             select ROW_NUMBER()over(partition by [custid] order by [orderdate] desc) AS newIndex,* from Sales.Orders

             ) as T where T.newIndex=1 

执行结果,已经按照客户分组,并且按时间顺序生成序号。

技术分享

对应LINQ代码为

var table = contex.GetTable<Orders>().ToList();

                var data = table.OrderByDescending(a => a.orderdate).GroupBy(a => a.custid)
                    .Select(g => new { g, count = g.Count() })
                    .SelectMany(t => t.g.Select(b => b)
                        .Zip(Enumerable.Range(1, t.count), (j, i) => new { j.custid, j.shipname, rn = i }));

 

LINQ SQL分组取最近一条记录

原文:http://www.cnblogs.com/xxrl-c/p/4516814.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!