我有一个返回一些分组数据的查询,而我正在绘制一个关于如何“展平”它的空白,以便在每个组中提供顶级信息。
Account A
- Group A
- Group B
- Group C
- etc
Account B
- Group B
- Group C
我想要做的就是将其“扁平化”为:
Account A | Group A | Sum(Group)
Account A | Group B | Sum(Group)
Account A | Group C | Sum(Group)
Account B | Group B | Sum(Group)
Account B | Group C | Sum(Group)
这是我到目前为止所做的,但我不确定该去哪里
var transactions = Accounts.Where(clause)
.Select(x => new
{
Account = x,
TransGroupedByBucket = x.TransactionLogs.GroupBy(tl => tl.TransactionType.BucketTypeID)
})
//pseudocode
//Select new {
// Account,
// One_TransactionLog_Group
//}
//will run for each group:
.Select(x => new
{
AccountInfo = x.Account.ID
Sum = One_TransactionLog_Group.Sum(tl => tl.Amount)
})
;
我想我只是有一个大脑放屁,有人能指出我正确的方向吗?我的一个想法是将其翻转为TransactionLog
级别并且遍历Account
,但TransactionLog
可能有0 Account
个,因此可能不能正常工作。
答案 0 :(得分:2)
您可以使用SelectMany
:
Accounts.SelectMany(x => x.TransactionLogs.
Select(y => new { Account = x.ID,
TransactionLog = y,
Sum = ... });