我有IList<Decimal>
我要将其转换为以...分隔的字符串。
我试过了。小数列表中的mrps
var mrpstring = string.Join<string>(",", mrps.Cast<string>().ToList());
抛出异常无法将'System.Double'类型的对象强制转换为'System.String'
任何解决方案?
答案 0 :(得分:5)
string.Join<T>
会自动在ToString
参数的每个元素上调用IEnumerable<T>
,而无需调用ToList
。所以这应该有效:
var mrpstring = string.Join(",", mrps);
答案 1 :(得分:3)
改为使用Select
:
mrps.Select(d => d.ToString())
错误中所述的double
实际上不能cast
到string
。因此,完整代码可能如下所示:
var mrpstring = string.Join(",", mrps.Select(d => d.ToString()).ToList());
答案 2 :(得分:2)
mrps
似乎是double的列表,而不是字符串列表。因此,请确保您投射到正确的类型:
var mrpstring = string.Join<string>(
",",
mrps.Cast<double>().Select(x => x.ToString()).ToList()
);
答案 3 :(得分:2)
使用select和join
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)));
答案 4 :(得分:2)
转换不是从decimal
转换为string
的正确方式,ToString()
是。由于string.Join
已经过载IEnumerable<T>
并使用ToString()
,您可以直接传递IList<decimal>
:
var mrpstring = string.Join(",", mrps);
答案 5 :(得分:0)
使用Select
:
string.Join(",", mrps.Select(d => d.ToString()).ToArray());