Lambda表达式之GroupBy

大家好,这是我在博客园的第一篇博客,也是我人生中的第一篇。毕业一年多,从事.net开发一年多,经验尚浅。一直有写点东西的冲动,更多的是为了与大家分享吧。从前都是收益于人,现在也想写点自己在工作中收获的知识点。不当之处,也想请各位指正,也正呼应了分享博客的一个主题,谢谢。

一下是正文-----

写Lambda表达式的时候其实和写sql的感觉差不多,只是有时候一些写法或先后顺序有点区别,今天要写的Groupby其实和sql中的group by是一样的道理,也是根据某些字段区合并数据。以下是我的一个例子

 List<A> models = details.GroupBy(p => new { p.D, p.B, p.C, p.H, p.M})  D,B,C,H,M是detail的属性
                 .Select(p => new A
                 {
                     H= p.Key.H,
                     D= p.Key.D,
                     Qty = p.Sum(a => a.Qty),
                     C= p.Key.C,
                     M= p.Key.M, 

                     K= p.Select(a => a.K).FirstOrDefault().ToString()
                 }).ToList();

写法:1.根据单个字段合并的时候details.GroupBy(p=>p.D),多个字段合并的时候是details.GroupBy(p=>new{p.D,d.M})

2. .Select(p => new A{D=p.Key.D,K=p.Select(a=>a.K).FirstOrDefault().ToString(),Qty=p.sum(a=>a.Qty)})

(1).如果在GroupBy()中有的字段就直接p.Key.字段

(2).合并求和 Qty=p.sum(a=>a.Qty) 此处的a代指的是details中特征相同但未合并的项,p指的是合并后的项

(3)GroupBy中没有的项可通过K= p.Select(a => a.K).FirstOrDefault().ToString()

注意点:1.sql中的group by是写在select甚至是where条件之后的,而Lambda表达式是写在前面,其实表达的意思是先合并details中的项

2.上述例子的原理是每次对Details GroupBy都会产生一个新的对象A,models这个List中存的都是一个一个A

3.select中功能强大,可以用三目运算符以及连接符 +

转载于:https://www.cnblogs.com/likewindplus/p/8135857.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值