【发布时间】:2019-03-29 14:15:37
【问题描述】:
我有一个看起来像这样的数据表
填充数据表后,我使用下面的代码按名称和总和进行分组。
var result = from tab in dtTemp.AsEnumerable()
group tab by tab["Name"]
into groupDt
select new
{
Agent = groupDt.Key,
Commision = groupDt.Sum((r) => decimal.Parse(r["Amount"].ToString()))
};
这给了我这个结果,问题是我缺少 FixedSalary 列。但是,如果我像使用 Commision = groupDt.Sum((r) => decimal.Parse(r["Amount"].ToString())) 一样对其求和,似乎我只能访问列数据 - 而且我不想对该列求和。
提前致谢
【问题讨论】:
-
FixedSalary 列的结果应该如何?例如,Nicklas Christensen 可以有两个不同的 FixedSalaries 还是总是相同的?
-
不,所有行的固定工资总是相同的 - 但每个名称可能不同
-
当你分组时,你会得到一个二维数组 [group][items]。所以总和通过项目枚举。如果您需要其他数据,您可以使用 First()、Last()、Select(y => ....) 或类似方法来枚举数组。在您的情况下,可能 FixedSalary = groupDt.First().FixedSalary