我有一个IList<Decimal>
,我想将它转换为用逗号隔开的字符串。
我尝试过将mrps
作为十进制数的列表
var mrpstring = string.Join<string>(",", mrps.Cast<string>().ToList());
抛出异常:“无法将类型为'System.Double'的对象转换为类型'System.String'”
有什么解决方案吗?
我有一个IList<Decimal>
,我想将它转换为用逗号隔开的字符串。
我尝试过将mrps
作为十进制数的列表
var mrpstring = string.Join<string>(",", mrps.Cast<string>().ToList());
抛出异常:“无法将类型为'System.Double'的对象转换为类型'System.String'”
有什么解决方案吗?
string.Join<T>
方法会自动对 IEnumerable<T>
参数中的每个元素调用 ToString
方法,无需调用 ToList
。所以这样做是可行的:
var mrpstring = string.Join(",", mrps);
ToString()
方法而不是强制转换来将decimal
类型转换成string
类型。由于string.Join
方法已经有一个重载可以接受IEnumerable<T>
类型并使用ToString()
方法,所以您可以直接传递您的IList<decimal>
:var mrpstring = string.Join(",", mrps);
Select
代替:
mrps.Select(d => d.ToString())
根据错误提示,double
类型的数据不能直接转换成string
类型。因此,完整的代码可能如下所示:
var mrpstring = string.Join(",", mrps.Select(d => d.ToString()).ToList());
var result = string.Join(",", mrps.Select(p => p.ToString()));
请记住,.ToString()方法使用CurrentCulture
格式化字符串。例如在德国,这将把逗号用作小数点,结果将是0,01,0,02
...
使用此方法确保始终使用小数点。
var result = string.Join(",", mrps.Select(p => p.ToString(CultureInfo.InvariantCulture)));
看起来mrps
是一个double类型的列表,而不是字符串列表。因此,请确保您将其转换为正确的类型:
var mrpstring = string.Join<string>(
",",
mrps.Cast<double>().Select(x => x.ToString()).ToList()
);
使用 Select
:
string.Join(",", mrps.Select(d => d.ToString()).ToArray());