【问题标题】:Subtract two dataset values and save it in a new column减去两个数据集值并将其保存在新列中
【发布时间】:2015-04-02 06:17:12
【问题描述】:

根据数据集值我有一个小问题,我想减去这些值并将其保存为一个新的变量列,这是我的代码:

StrSQL = "Select * from Stocks";
 rs = (DataSet) MethodClass.ConnectionToQuery(StrSQL);
for (i = 0; i < rs.Tables[0].Rows.Count; i++)
{
StrSQL = " Update Stocks Set ";

// Error is in below line 
 StrSQL = StrSQL + " Balance = '" + (rs.Tables[0].Rows[i]["RQty"]) - (rs.Tables[0].Rows[i]["IQty"]) + "'";

StrSQL = StrSQL + " Where ProductCode = '" + rs.Tables[0].Rows[i]["ProductCode"] + "'";
MethodClass.ConnectionToQueryCommand(StrSQL, "ExecuteNonQuery");
}

错误是:

运算符'-'不能应用于'string'和'object'类型的操作数

【问题讨论】:

  • 你读过你的错误信息吗?正如它所说,您不能在stringobject 之间使用- 运算符。 rs.Tables[0].Rows[i]["RQty"]rs.Tables[0].Rows[i]["IQty"] 都返回 object
  • 是的,我读过,但系统接受第一个值作为字符串

标签: c# string parsing int dataset


【解决方案1】:

我假设,该数量是一个整数值。 您必须将值解析为整数才能使用它们进行计算

替换

StrSQL = StrSQL + " Balance = '" + (rs.Tables[0].Rows[i]["RQty"]) - (rs.Tables[0].Rows[i]["IQty"]) + "'";

int Value1 = int.Parse(rs.Tables[0].Rows[i]["RQty"]);
int Value2 = int.Parse(rs.Tables[0].Rows[i]["IQty"]);
int Result = Value1  - Value2 ;
StrSQL = StrSQL + " Balance = '" + Result  + "'";

【讨论】:

    【解决方案2】:
    StrSQL = StrSQL + " Balance = '" + (Convert.ToDecimal(rs.Tables[0].Rows[i]["RQty"])) - (Convert.ToDecimal(rs.Tables[0].Rows[i]["IQty"])) + "'";
    

    【讨论】:

    • @SonerGönül 理想情况下,数量应该是十进制值。
    • 所有值都是整数
    • @MaroofQaiser 改用 Convert.ToInt32
    • @prashanth,我用过,但系统接受第一个值作为字符串,然后它显示错误,如运算符'-'不能应用于'string'和'int'类型的操作数
    猜你喜欢
    • 2017-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多