我正在寻找更新的List / Array中更新值的方法:
我的代码就像 -
String[] values = baseValue.Split(new []{'+'});
因为'values'可以有十进制/字符串值 - 我想更新此列表中的项目以删除小数后的任何值 -
for (int i = 0; i < values.Count(); i++)
{
decimal newvalue;
if (Decimal.TryParse(values[i], out newvalue))
{
values[i] = Decimal.ToInt32(newvalue).ToString();
}
}
使用Linq /没有Linq有没有更好的方法来实现上述目标?
答案 0 :(得分:3)
您可以使用字符串操作,而不是转换为decimal
然后转换为int
,最后返回string
。
string[] values = baseValue.Split('+');
for (int i = 0; i < values.Length; i++)
{
int pos = values[i].IndexOf('.');
if (pos >= 0) {
values[i] = values[i].Substring(0, pos);
}
}
原因是这里没有四舍五入。
String.Split
有一个参数params char[] separator
的重载。由于params
关键字,您可以根据需要指定任意数量的字符,而无需显式创建数组。
string[] result = s.Split('x', 'y', 'z');
使用values.Length
这是数组类型中内置的属性。 values.Count()
是一个LINQ扩展方法,它枚举所有数组项,因此效率不高。
答案 1 :(得分:1)
您可以使用扩展方法:
public static void ConvertDecimalToInts(this string[] values)
{
for (int i = 0; i < values.Count(); i++)
{
decimal newvalue;
if (Decimal.TryParse(values[i], out newvalue))
{
values[i] = Decimal.ToInt32(newvalue).ToString();
}
}
}
并按原样使用:
String[] values = baseValue.Split(new[] { '+' });
values.ConvertDecimalToInts();
答案 2 :(得分:0)
Olivier的答案可能更好,因为它不需要三次转换,但如果您愿意,可以使用Linq执行此操作:
values = baseValue.Split('+')
.Select(v => Decimal.ToInt32(Decimal.Parse(v)).ToString());