我想在同一数据表的新列中按总和显示分组。 例如:
我希望输出是这样的:
我试过如下:
- 根据sno分组并存储在不同的表中。
- 通过使用 for 循环,我将总值分配给旧数据表。
for (int o = 0; o < returndata.Rows.Count;o++)
{
for (int i = 0; i < table.Rows.Count;i++)
{
if(returndata.Rows[o]["sno"].ToString() == table.Rows[i]["sno"].ToString())
{
table.Rows[i]["total"] = returndata.Rows[o]["total"];
}
}
}
有没有其他方法可以使用 c# linq 直接分配总和值?
最佳答案
虽然这个问题是针对 c# 标记的,并且在 c# 中有很多方法可以做到这一点,但我只想强调数据库比编程语言更适合数据操作/转换。像这样的事情就应该交给数据库,尤其是数据量很大的时候。您所需要做的就是修改查询,让数据库完成这部分工作。
例如在 SQL Server 中,它应该是这样的:
select sno, amount, total = sum(amount) over (partition by sno) from YourTable
这将为您提供您正在寻找的东西,而不会减慢您的应用程序。
编辑,在 OP 的评论之后
当更改查询不是一个选项时,在 .NET
中执行此操作的简单方法是使用 DataTable.Compute
方法。
foreach (DataRow row in returndata.Rows)
{
row["total"] = returndata.Compute("sum(amount)", "sno=" + row["sno"].ToString());
}
关于c# - 在新列中按总和显示分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66703694/