Lambda(Linq)表达式GroupBy()的两种用法

1 篇文章 0 订阅

前言

GroupBy通常用于分组统计,可根据单字段或某些字段区进行合并统计数据
Lambda的思想与SQL语句类型,如以下例子:
统计和B、C、D同组的数量

用法1

List<Order> Orders= samples.GroupBy(p => new { p.B, p.C, p.D})  //D,B,C是samples的属性
                 .Select(p => new Order
                 {
                     B= p.Key.B,
                     C= p.Key.C,
                     D= p.Key.D,
                     Qty = p.Sum(a => a.Qty),
                     A= p.Select(a => a.A).FirstOrDefault().ToString()
                 }).ToList();

说明:根据单个字段合并的时候details.GroupBy(p=>p.B),多个字段合并的时候是details.GroupBy(p=>new{p.B,d.C})

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

说明:
(1).如果在GroupBy()中存在的字段就直接p.Key.字段

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

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

用法2

上述代码可写成下面的模式:

List<Order> Orders= samples.GroupBy(p => new { p.B, p.C, p.D}, p => p.Qty, (key, g) => new Order
                  {
                        H= Key.B,
                     	D= Key.C,
                     	C= Key.D,
                     	Qty = g.Sum(),
                     	A= p.Select(a => a.A).FirstOrDefault().ToString()
                     }).ToList();

说明:(key,g)中的 key是GroupBy()的第一个参数,g就是GroupBy()的第二个参数。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值