如何在C#中将十进制数组转换为字符串数组?

时间:2013-04-18 06:01:15

标签: c# arrays

我需要将Decimal数组转换为字符串数组。如何将decimal []转换为string []?我可以用

吗?
  

Array.ConvertAll()

执行此任务的方法?

3 个答案:

答案 0 :(得分:12)

是的,您可以非常简单地使用Array.ConvertAll - 您只需要提供转换委托,这最容易使用lambda表达式完成:

string[] strings = Array.ConvertAll(numbers, x => x.ToString());

效率略低,但更具惯用性和灵活性,您可以使用LINQ:

string[] strings = numbers.Select(x => x.ToString()).ToArray();

或者如果你实际上并不需要一个数组,并且很乐意每次迭代它时执行字符串转换:

IEnumerable<string> strings = numbers.Select(x => x.ToString());

此处的灵活性是numbers可以更改为任何 IEnumerable<decimal> - 因此,如果您更改为使用List<decimal>,则无需例如,更改此转换代码。

调用ToArray时效率的轻微损失是调用Select的结果是一个懒惰评估的序列,它不知道它的大小开始 - 所以它不知道输出数组的确切大小,而ConvertAll显然是。

答案 1 :(得分:4)

当然,您可以使用Array.ConvertAll方法。你只需要一个可以用lambda表达式轻松完成的对话。

string[] string_array = Array.ConvertAll(decimal_array, x => x.ToString());

Array.ConvertAll转换整个数组。它将一个数组中的所有元素转换为另一个类型。

让我们编码;

decimal[] decimal_array = new decimal[] {1.1M, 1.2M, 1.3M, 1.4M };
string[] string_array = Array.ConvertAll(decimal_array, x => x.ToString());

foreach (var item in string_array)
{
      Console.WriteLine("{0} - {1}", item.GetType(), item);
}

输出将是;

System.String - 1.1
System.String - 1.2
System.String - 1.3
System.String - 1.4

这是DEMO

答案 2 :(得分:2)

试试这个

decimal[] decArr = new decimal[5];
// ...
string[] strArr = decArr.Select(d => d.ToString("0.00")).ToArray();

希望这有帮助