一个linq表达式中的多个GroupBy
本文关键字:GroupBy linq 表达式 一个 | 更新日期: 2023-09-27 18:02:49
我似乎无法在一个linq表达式中组合两个GroupBy语句…
现在我正在做这样的事情:
double maxInvestment = 0;
foreach (var playerAction in TotalUserActions.GroupBy(p => p.Player))
{
var MaxInvestmentPerPlayer = playerAction.GroupBy(p => p.RoundId)
.Select(p => p.LastOrDefault())
.Sum(p=> p.BetSize);
if(MaxInvestmentPerPlayer > maxInvestment)
maxInvestment = MaxInvestmentPerPlayer;
}
我想做的是这样的…
double maxInvestment = TotalUserActions.GroupBy(p => p.Player)
.GroupBy(p => p.RoundId)
.Select(p => p.LastOrDefault())
.Sum(p=> p.BetSize);
但这不起作用…有人能帮我一下吗?
谢谢!
看起来这就是你想要的,关键是内部查询被包装在对Select()
的外部调用中:
var maxInvestment = TotalUserActions.GroupBy(p => p.Player)
.Select(g => g.GroupBy(x => x.RoundId)
.Select(x => x.LastOrDefault())
.Sum(x => x.BetSize))
.Max();
我确实质疑你使用LastOrDefault()
,因为你没有指定任何排序,你也可以使用FirstOrDefault()
,节省跳转到最后一个元素的麻烦。