将十进制列表转换为由分隔符(',')分隔的字符串

时间:2013-12-30 14:48:20

标签: c# string generics

我有IList<Decimal>我要将其转换为以...分隔的字符串。

我试过了。小数列表中的mrps

var mrpstring = string.Join<string>(",", mrps.Cast<string>().ToList());

抛出异常无法将'System.Double'类型的对象强制转换为'System.String'

任何解决方案?

6 个答案:

答案 0 :(得分:5)

string.Join<T>会自动在ToString参数的每个元素上调用IEnumerable<T>,而无需调用ToList。所以这应该有效:

var mrpstring = string.Join(",", mrps);

答案 1 :(得分:3)

改为使用Select

mrps.Select(d => d.ToString())

错误中所述的double实际上不能caststring。因此,完整代码可能如下所示:

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());