.net LinQ to objects GroupBy()按对象和Sum()按金额
我有一个非常简单的例子,我开始用foreach()解决,但后来我想我可以用Linq解决 基本上我有.net LinQ to objects GroupBy()按对象和Sum()按金额,.net,linq,grouping,linq-to-objects,.net,Linq,Grouping,Linq To Objects,我有一个非常简单的例子,我开始用foreach()解决,但后来我想我可以用Linq解决 基本上我有IList,它包含PaymentTransaction对象,有两个属性Dealer和Amount 我想按GroupBy()经销商和Sum()按金额 我尝试使用以下代码来完成此任务,但不幸的是,它不起作用: var test = paymentTransactionDao.GetAll().GroupBy(x => x.Dealer).Sum(x => x.Amount); 我到底做错了
IList
,它包含PaymentTransaction
对象,有两个属性Dealer
和Amount
我想按GroupBy()
经销商和Sum()
按金额
我尝试使用以下代码来完成此任务,但不幸的是,它不起作用:
var test = paymentTransactionDao.GetAll().GroupBy(x => x.Dealer).Sum(x => x.Amount);
我到底做错了什么?GroupBy将返回一组IGrouping
(假设Dealer是一个字符串)。试试这个:
...GroupBy(...).Select(x => new {Dealer=x.Key, Amount=x.Sum(xx => xx.Amount)});
(只是猜测,因为我不在VS前面。)关于你真正想要的结果是什么,这个问题有点不清楚,所以我假设你想要总结每组的金额:
var test =
paymentTransactionDao.GetAll()
.GroupBy(x => x.Dealer)
.Select(g => new { Dealer = g.Key, Sum = g.Sum(x => x.Amount) });
使用,通过根据其键获取序列,从而从每个组和键创建结果值,从而消除了对选择的需要。然后投影每个元素:
GroupBy(pt => pt.Dealer,
pt => pt.Amount,
(dealer, amount) => new {
Dealer = dealer,
TotalAmount = amount.Sum()
}
)
@gabe:我不知道,我不假设它是什么类型的对象,也不假设这个方法除了返回一个集合之外还做了什么。