3

我是第一次在这个论坛发帖。我真的希望我能找到一些帮助。我正在做的是从SQL加载大约 ... 1000 值(示例),我做得很好。

例如查询是:Select Value from DatabaseA.dbo.Values

那个“价值”==>十进制(10, 2)

sqlConnection2.Open();
insertCommand2.ExecuteNonQuery();
SqlDataReader reader2 = insertCommand2.ExecuteReader();
if (reader2.HasRows)
{
  while (reader2.Read())
  {
    decimal Value = reader.GetDecimal(0);

这应该可以正常工作。但我想要做的是对所有这些都进行 + ......例如第一个值 = 16 ,第二个 = 28 ,第三个:78

我想制作 16 + 28 + 78 ...但对于加载它们的所有值。请问我该怎么做?, 谢谢 。

4

4 回答 4

3

假设您也想保留原始值,您可以拥有 aList<decimal>并累积总数。

List<decimal> totals = new List<decimal>();

然后在你的while循环中:

totals.Add(Value);

然后,您可以通过以下方式返回运行总计:

var runningTotal = totals.Sum();

如果您不想要原始值,则可以使用:

 decimal value;
 while (reader2.Read())
 {
    value += reader.GetDecimal(0);
 }
于 2013-09-13T09:42:15.627 回答
2

只需将变量放在循环之外并使用+= 运算符

decimal Value = 0;
sqlConnection2.Open();
insertCommand2.ExecuteNonQuery();
SqlDataReader reader2 = insertCommand2.ExecuteReader();

if (reader2.HasRows)
{
    while (reader2.Read())
    {
       Value += reader.GetDecimal(0);
    }
}
于 2013-09-13T09:42:45.877 回答
1

将sql更改为

Select Sum(Value) from DatabaseA.dbo.Values

接着

decimal Value = (decimal)insertCommand2.ExecuteScalar(); 
于 2013-09-13T09:47:45.757 回答
0

您可以使用 SQLSUM函数。看看http://technet.microsoft.com/en-us/library/ms187810.aspx

于 2013-09-13T09:42:39.780 回答