1

我正在尝试添加 2 个十进制值并将其保存到新的数据列中。但我意识到这不是我应该怎么做的。我在哪里想错了,请告诉我。谢谢!这是在 Visual Studio 2005 中使用 c#..

 Dataset ds = new DataSet();
 DataColumn newColumn2;
 newColumn2 = new DataColumn("TotalAmount");
 decimal TotalAmountSold = 0;
 for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
 {
     TotalAmountSold = Convert.ToDecimal(ds.Tables[0].Rows[i]["AmountSold"]) + Convert.ToDecimal(ds.Tables[0].Rows[i]["AmountUpgraded"]);
 }
 TotalAmountSold = Math.Round(Convert.ToDecimal(TotalAmountSold.ToString()), 2);
 newColumn2.Expression = TotalAmountSold.ToString();
 ds.Tables[0].Columns.Add(newColumn2);
4

2 回答 2

4

查看MSDN上的示例。您基本上想要创建一列,指定公式,然后将该列添加到 DataTable。你最终会得到类似的东西

// Create total column.
DataColumn totalColumn = new DataColumn();
totalColumn.DataType = System.Type.GetType("System.Decimal");
totalColumn.ColumnName = "total";
totalColumn.Expression = "AmountSold + AmountUpgraded";

// Add columns to DataTable.
...
table.Columns.Add(totalColumn);

您不需要手动循环遍历所有行,这将为您计算。

于 2012-08-03T19:27:41.740 回答
0

只是学习?一些建议:

  1. 摆脱 Visual Studio 2005。Microsoft 提供了最新的 Visual Studio 的免费版本,尽管有限制。主要是因为 VS 2005 太糟糕了。
  2. 查找并使用 Microsoft 在线文档。
  3. 举一个更好的例子。你错过了一个重要的部分 - 从数据库中获取数据。谷歌“C# DataAdapter 类”。
  4. 转换为十进制可能是不必要的。我假设数据库将数字存储为数字数据类型。我进一步假设接收此数据的 DataTable 具有将其数据类型指定为十进制的特定列。

这就是您显示的代码如何清理:

    DataColumn newColumn2 = new DataColumn("TotalAmount", typeof(decimal));
    十进制 TotalAmountSold = 0;

    foreach(ds.Tables[0].Rows 中的 DataRow theRow){
        TotalAmountSold += theRow['AmountSold"] + theRow["AmountUpgraded"];
    }
  1. 采用该类型的 DataColumn 构造函数。现在我们不必在添加过程中转换任何东西。这假设要添加的列也是十进制的。
  2. foreach 比 for 循环更简洁、更具表现力
  3. += 否则TotalAmountSold我们添加的每一行都会被覆盖。
于 2012-08-03T19:54:37.093 回答