我想在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];
}
答案 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()方法将其与项数组中值的和相乘。这应该会给你正确的结果。