求和/在foreach循环中添加两个值

时间:2016-09-21 05:55:23

标签: c#

我想在forach循环中添加数组项。 我的RegionalEarn数组就像这样,

[0]Region1=25

[1]Region2=50

我需要最终RModel.TAX应该是75(25+50)但在我的情况下它会像2550

我的代码

string[] RegionalEarn = tickets["EARN"].ToString().Split(',');

foreach (var item in RegionalEarn)
{
RModel.TAX = RModel.TAX + item.Split('=')[1];
}

3 个答案:

答案 0 :(得分:2)

你要添加字符串,而不是数字。您可以使用TryParse方法(例如Int32类型)尝试将字符串转换为int。其他数字类型具有类似的TryParse方法。如果您的号码带有额外的符号,点或逗号,请应用接受与Numberstyle匹配的FormatProvider的重载或来自该号码的文化。

string[] RegionalEarn = tickets["EARN"].ToString().Split(',');

var sum =0;    
foreach (var item in RegionalEarn)
{
   var num = 0;
   if (Int32.TryParse(item.Split('=')[1], out num))
   {
       sum = sum + num;
   }
   else 
   {
       // log error, item.Split('=')[1] is not an int
   }
}
RModel.TAX = sum.ToString();

答案 1 :(得分:1)

实际上你就像concatenation.it只出现字符串值。所以尝试转换为int或double。

 string[] RegionalEarn = tickets["EARN"].ToString().Split(',');


  foreach (var item in RegionalEarn)

   {

RModel.TAX = Convert.ToInt32(RModel.TAX) + Convert.ToInt32( item.Split('=')[1]);

} 

答案 2 :(得分:1)

这是一种简单的方法。

string[] RegionalEarn = tickets["EARN"].ToString().Split(',');

foreach (var item in RegionalEarn)
{
    RModel.TAX = (int.Parse(RModel.TAX) * item.Split('=').Sum (p => int.Parse(p))).ToString();
}

以上将使{(1}}使用Sum()方法将其与项数组中值的相乘。这应该会给你正确的结果。