用Linq 解决 数据的多字段分组统计(VB.net)

Sub Main
	dim objs as array = { _ 
		new with { .Item="A",  .Loc="L1", .Q1 = 1, .Q2=0}, _
		new with { .Item="A",  .Loc="L1", .Q1 = 2, .Q2=1}, _
		new with { .Item="B",  .Loc="L1", .Q1 = 3, .Q2=99}, _
		new with { .Item="B",  .Loc="L2", .Q1 = 7, .Q2=0} _
		}
		
		dim query as IEnumerable = from e in objs 
		group e by key= new with { key e.Item, key e.Loc }  into g=Group _
		select new with { _
			.key = key.toString, _
			.value = new with { _
				.Q1 = g.sum(function(x) x.Q1), _
				.Q2 = g.sum(function(x) x.Q2), _
				.Count = g.Count _
			} _
		}
		
		dim objHash as new HashTable 
		for each e as object in query
			objHash.Add(e.Key,e.Value)
			Console.WriteLine(e)
		next 
		
		dim obj as Object = objHash("{ Item = B, Loc = L1 }")
		Console.WriteLine(" <Item = B, Loc = L1> | Q1:{0}- Q2:{1}-Q3:{2} |", obj.Q1, obj.Q2, obj.Count,5)
		
		for each e as object in objs
			Console.WriteLine("{0}-{1}-{2}", e.Item, e.Q1,e.Q2)
		next
End Sub


LinqPad  测试结果:


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值