【问题标题】:How to add two column value in one final amount?如何在一个最终数量中添加两列值?
【发布时间】:2018-10-27 13:03:06
【问题描述】:

我在 c# 中有数据表,我想将两列值加到一个中,Add 表示 2+2 =4 这样。请帮帮我,我下面的代码不起作用

for (int i = 0; i < dtOrdersDetail.Rows.Count; i++)
{
  DataRow dtItemRow = dtOrderReceipt.NewRow();
  dtItemRow["FinalAmount"] = dtOrdersDetail.Rows[i]["ComboAmount"] + dtOrdersDetail.Rows[i]["TotalPrice"];
}

【问题讨论】:

  • 怎么不工作?得到空行?还是只有总数?
  • 尝试使用强制转换(例如,dtItemRow["FinalAmount"] = (int)dtOrdersDetail.Rows[i]["ComboAmount"] + (int)dtOrdersDetail.Rows[i]["TotalPrice"]; where (int) 应该是正确的数据类型...
  • @carlosfcmendes 指定的演员阵容无效。
  • 正如我所说,你应该输入正确的数据类型......(int)它只是一个样本......看看stackoverflow.com/questions/5577484

标签: c# asp.net asp.net-mvc datatable


【解决方案1】:

在这种情况下,您必须在两个地方更正代码。

  1. 转换源数据表列。

    dtItemRow["FinalAmount"] = Convert.ToInt32(dtOrdersDetail.Rows[i]["ComboAmount"]) + Convert.ToInt32(dtOrdersDetail.Rows[i]["TotalPrice"]);

  2. 在数据表中添加行。

    dtOrderReceipt.Rows.Add(dtItemRow);

所以总而言之您的代码如下所示

 for (int i = 0; i < dtOrdersDetail.Rows.Count; i++)
  {
      DataRow dtItemRow = dtOrderReceipt.NewRow();
      dtItemRow["FinalAmount"] = Convert.ToInt32(dtOrdersDetail.Rows[i]["ComboAmount"]) + Convert.ToInt32(dtOrdersDetail.Rows[i]["TotalPrice"]);
      dtOrderReceipt.Rows.Add(dtItemRow);
  } 

【讨论】:

    【解决方案2】:

    @john,看看下面的逻辑

    DataTable table = new DataTable();
    table.Columns.Add("TotalPrice", typeof(int));
    table.Columns.Add("ComboAmount", typeof(int));
    
    // Here we add five DataRows.
    table.Rows.Add(10,10);
    table.Rows.Add(20,20);
    table.Rows.Add(30,20);
    
    DataTable dtOrderReceipt = new DataTable(); 
    dtOrderReceipt.Columns.Add("FinalAmount", typeof(int));
    
    for (int i = 0; i < table.Rows.Count; i++)
    {
        DataRow dtItemRow = dtOrderReceipt.NewRow();
        dtOrderReceipt.Rows.InsertAt(dtItemRow, i);
        dtItemRow["FinalAmount"] = (int)table.Rows[i]["ComboAmount"] + (int)table.Rows[i]["TotalPrice"];
    }
    

    我认为在创建新行后,您忘记将其注入您的数据表。即

     DataRow dtItemRow = dtOrderReceipt.NewRow();
     dtOrderReceipt.Rows.InsertAt(dtItemRow, i);
    

    让我知道逻辑对你有用吗?

    【讨论】:

      猜你喜欢
      • 2019-09-01
      • 2021-02-01
      • 1970-01-01
      • 2022-06-15
      • 2019-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多