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

如何在C#中将十进制数组转换为字符串数组?,c#,arrays,C#,Arrays,我需要将十进制数组转换为字符串数组。如何将十进制[]转换为字符串[]?我能用吗 Array.ConvertAll() 方法来执行此任务?尝试此方法 decimal[] decArr = new decimal[5]; // ... string[] strArr = decArr.Select(d => d.ToString("0.00")).ToArray(); 希望这有帮助是的,您可以非常简单地使用-您只需要提供转换委托,这是使用lambda表达式最容易完成的: string[] s

我需要将十进制数组转换为字符串数组。如何将十进制[]转换为字符串[]?我能用吗

Array.ConvertAll()

方法来执行此任务?

尝试此方法

decimal[] decArr = new decimal[5];
// ...
string[] strArr = decArr.Select(d => d.ToString("0.00")).ToArray();
希望这有帮助

是的,您可以非常简单地使用-您只需要提供转换委托,这是使用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());
IEnumerable strings=numbers.Select(x=>x.ToString());
这里的灵活性是,
数字
可以更改为任意
IEnumerable
——因此,如果您更改为使用
列表
,则不需要更改此转换代码

调用
ToArray
时效率的轻微损失是调用
Select
的结果是一个延迟计算的序列,它不知道它的大小,因此它不能立即知道输出数组的确切大小,而
ConvertAll
显然知道。

当然可以使用该方法。你只需要一个对话,这个对话可以用lambda表达式轻松完成

string[] string_array = Array.ConvertAll(decimal_array, x => x.ToString());
转换整个数组。它将一个数组中的所有元素转换为另一种类型

让我们编写代码

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

这是一个。

您必须最终创建新数组,所以只需迭代此数组。@Guy:好吧,array.ConvertAll可以为您做到这一点……尝试它或阅读文档并不费什么力气:。无论如何,这个方法会奏效。@JonSkeet是的,我知道,你的解决方案很棒+1了解为什么ConvertAll更高效。我正要问这个问题,但刚刚看到你的编辑这怎么可能这个问题不被接受这要详细得多。@SonerGönül这可能是为了阻止Jon的“全情投入”体验:)