如何解决分组依据不是处理两列,而是处理一列
我有两个版本的代码:
(此功能可以正常工作,对metid进行汇总和分组)
Dim meterReadingsAggregated As List(Of ImportMeterReadingWithCustomField) = validreads.GroupBy(Function(m) m.MeterInfo.MeterId).[Select](Function(mr) New ImportMeterReadingWithCustomField With {
.Timestamp = mr.Last().Timestamp,.ChargeType = mr.Last().ChargeType,.Value = mr.Sum(Function(c) c.Value),.Register = mr.Last().Register,.RowNumber = mr.Last().RowNumber,.MeterInfo = mr.Last().MeterInfo
}).ToList()
(但是这不是,我需要在timestamp上添加基于计价器的分组)
Dim meterReadingsAggregated As List(Of ImportMeterReadingWithCustomField) = validreads.GroupBy(Function(m) New With {m.MeterInfo.MeterId,m.Timestamp}).[Select](Function(mr) New ImportMeterReadingWithCustomField With {
.Timestamp = mr.Last().Timestamp,.MeterInfo = mr.Last().MeterInfo
}).ToList()
我检查了时间戳记值,并且100%它们是相同的,所以不是这样。我只尝试使用带有metid列的第二个版本,但它无法正常工作,因此使用New With There时出现了一些不适,但我很难弄清楚。
感谢您的帮助。
解决方法
在组中缺少“密钥”。
(这可行)
Dim meterReadingsAggregated As List(Of ImportMeterReadingWithCustomField) = validreads.GroupBy(Function(m) New With {Key m.MeterInfo.MeterId,Key m.Timestamp}).[Select](Function(mr) New ImportMeterReadingWithCustomField With {
.Timestamp = mr.Last().Timestamp,.ChargeType = mr.Last().ChargeType,.Value = mr.Sum(Function(c) c.Value),.Register = mr.Last().Register,.RowNumber = mr.Last().RowNumber,.MeterInfo = mr.Last().MeterInfo
}).ToList()
它正在编译,没有问题,因此并没有立即发现它丢失了任何东西。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。