class ExpenseClaim
{
int EmployeeId;
int Team;
double Cost;
}
List<EmployeeExpense> GetEmployeeExpenses()
{
return _expenseClaims // `_expenseClaims` is `List<ExpenseClaim>`
.GroupBy(e => e.EmployeeId)
.Select(x =>
new EmployeeExpense(
x.Key,
// TODO: employee team?
x.Sum(e => e.Cost)
);
}
请原谅这个相当人为的例子。
如何在 GetEmployeeExpenses
中获取员工团队?我假设我需要第二个 group by 但我无法计算出语法。
请注意,对于给定的员工,他们的 Team
总是相同的,所以我很乐意以 Team
为例,第一个分组是记录。
所以...
ExpenseClaim { EmployeeId = 1, Team = Sales, Cost = 100 }
ExpenseClaim { EmployeeId = 1, Team = Sales, Cost = 50 }
=>
EmployeeExpense { EmployeeId = 1, Team = Sales, Cost = 150 }
最佳答案
在您的特定情况下,您可以在 Select 中使用 x.First().Team
来获取团队信息。
对于实际需要对多个字段进行分组的其他情况,您可以对匿名类型进行分组。比如
someQuery.GroupBy(f => new { f.Foo, f.Bar }).Select(...);
关于c# - Linq GroupBy 和多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4439352/