gpt4 book ai didi

c# - 在新列中按总和显示分组

转载 作者:行者123 更新时间:2023-12-04 15:02:38 24 4
gpt4 key购买 nike

我想在同一数据表的新列中按总和显示分组。例如:

input

我希望输出是这样的:

output

我试过如下:

  1. 根据sno分组并存储在不同的表中。
  2. 通过使用 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

这将为您提供您正在寻找的东西,而不会减慢您的应用程序。

enter image description here

编辑,在 OP 的评论之后

当更改查询不是一个选项时,在 .NET 中执行此操作的简单方法是使用 DataTable.Compute 方法。

foreach (DataRow row in returndata.Rows)
{
row["total"] = returndata.Compute("sum(amount)", "sno=" + row["sno"].ToString());
}

datatable compute

关于c# - 在新列中按总和显示分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66703694/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com