C# 如何对动态生成的列中所有行的值求和?

C# 如何对动态生成的列中所有行的值求和?,c#,sql,itext,datarow,C#,Sql,Itext,Datarow,各位程序员早上好 我试图对名为SubTotal 小计需要从每一行的LineTotal中求和,但行是动态生成的,并且是在按钮单击事件中生成的。我将在下面链接我的代码和屏幕截图,也许你们中的一位可以帮助我: 编辑:-我尝试了下面的所有“解决方案”,但每次我尝试将其添加到我的页面时,都会导致我的PDF没有页面,我也尝试了自己的研究,但没有效果,因为这些也会导致我的PDF没有页面 尝试了以下方法:- (1)int sum = Convert.ToInt32(dt.Compute("SUM(Salary)

各位程序员早上好

我试图对名为
SubTotal
小计需要从每一行的
LineTotal
中求和,但行是动态生成的,并且是在按钮单击事件中生成的。我将在下面链接我的代码和屏幕截图,也许你们中的一位可以帮助我:

编辑:-我尝试了下面的所有“解决方案”,但每次我尝试将其添加到我的页面时,都会导致我的PDF没有页面,我也尝试了自己的研究,但没有效果,因为这些也会导致我的PDF没有页面

尝试了以下方法:-

(1)int sum = Convert.ToInt32(dt.Compute("SUM(Salary)", string.Empty));

(2)DataTable dt= dataSet.Tables["YourTableName"];
object lineTotalInputSum ;
lineTotalInputSum = dt.Compute("Sum("YourColumnName")", string.Empty);

(3)var subTotal= rows.Sum(row => row.Field<double>("LineTotal"));
在下面,您将看到我想用红色求和的列和用绿色表示的值(值来自哪里)列的屏幕截图*这些都是动态生成的*

如果您能告诉我如何将其存储在var中,那么我可以从那里获取它 并提前感谢您。

尝试在foreach循环外的“Line Total”列中使用LINQ,如下所示

var subTotal= rows.Sum(row => row.Field<double>("LineTotal"));
var subTotal=rows.Sum(row=>row.Field(“LineTotal”);
或者,当您逐行处理数据时,使用一种老式的方法,即使用一个变量并向其中添加行值

希望这有帮助

尝试在foreach循环外的“Line Total”列中使用LINQ,如下所示

var subTotal= rows.Sum(row => row.Field<double>("LineTotal"));
var subTotal=rows.Sum(row=>row.Field(“LineTotal”);
或者,当您逐行处理数据时,使用一种老式的方法,即使用一个变量并向其中添加行值


希望这有帮助

我不太确定DataTable的外观,但您可以使用该方法获取所需列的总和:

DataTable dt= dataSet.Tables["YourTableName"];
object lineTotalInputSum ;
lineTotalInputSum = dt.Compute("Sum("YourColumnName")", string.Empty);

我不太确定DataTable的外观,但您可以使用该方法获取所需列的总和:

DataTable dt= dataSet.Tables["YourTableName"];
object lineTotalInputSum ;
lineTotalInputSum = dt.Compute("Sum("YourColumnName")", string.Empty);


你应该在网上搜索
c#linq datarow sum
,你会找到很多答案。谢谢你,我会试一试,我也会在这里留心,以防万一我没来对你好,艾比,我来过这里,我想这可能行得通,但我不明白
int sum=0;foreach(dt.Rows中的DataRow dr){foreach(dt.Columns中的DataColumn dc){sum+=(int)dr[dc];}}
这个dc是每个DataColumn吗?我怎样才能使它成为唯一的小计列呢?是的,你可能需要调整它。(请查看下面的答案以获取备选答案)请查看我在帖子上的编辑。你应该在网上搜索
c#linq datarow sum
,你会找到很多答案。谢谢。我会给你一个机会,我也会在这里留心,以防万一我没来嗨,艾比,我遇到了这个问题,我认为它可以解决,但我不明白
int sum=0;foreach(dt.Rows中的DataRow dr){foreach(dt.Columns中的DataColumn dc){sum+=(int)dr[dc];}}
这个dc是每个DataColumn吗?我怎样才能使它成为唯一的小计列呢?是的,你可能需要调整它。(检查下面的答案以获得替代答案)请查看我在post@devandholmes使用此解决方案时会出现什么错误?使用
try catch
块并调试代码,以查看错误发生的确切位置。还要确保在此处传递的列名正确:
dt.Compute(“Sum”(“YourColumnName”)、string.Empty)我没有得到编译时错误,我得到一个错误,说您的pdf文档在生成pdf的按钮单击事件上没有页面,我现在运行调试,看看哪里出了问题-我对我的调试技能评分为6/10,在DataTable dt=dataSet.Tables[“YourTableName”];对象lineTotalInputSum;lineTotalInputSum=dt.Compute(“Sum(“YourColumnName”)”,string.Empty);第一行显示DataTable dt=。。。我已经声明了我的datatable,所以我需要这样做吗again@devandholmes好的,让我知道您看到了什么,不需要再次声明数据表。使用原始数据表
dt
you kind sir are a Star,我发现了哪里出了问题,这一切都与我的“值提取”有关。对象以浮点形式返回,我直接传递到字符串,没有先转换为字符串,我说过。ToString()就像一个聪明人会记得做的那样,一切又开始运转了,我得到了我想要的结果,我非常感谢你的时间,我给了你答案you@devandholmes使用此解决方案时会出现什么错误?使用
try catch
块并调试代码,以查看错误发生的确切位置。还要确保在此处传递的列名正确:
dt.Compute(“Sum”(“YourColumnName”)、string.Empty)我没有得到编译时错误,我得到一个错误,说您的pdf文档在生成pdf的按钮单击事件上没有页面,我现在运行调试,看看哪里出了问题-我对我的调试技能评分为6/10,在DataTable dt=dataSet.Tables[“YourTableName”];对象lineTotalInputSum;lineTotalInputSum=dt.Compute(“Sum(“YourColumnName”)”,string.Empty);第一行显示DataTable dt=。。。我已经声明了我的datatable,所以我需要这样做吗again@devandholmes好的,让我知道您看到了什么,不需要再次声明数据表。使用原始数据表
dt
you kind sir are a Star,我发现了哪里出了问题,这一切都与我的“值提取”有关。对象以浮点形式返回,我直接传递到字符串,没有先转换为字符串,我说过。就像一个聪明人会记得做的那样,一切又开始工作了,我得到了我想要的结果,我非常感谢你的时间,我给了你答案