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

Kri*_*han -1 c# arrays

我需要将十进制数组转换为字符串数组.如何将decimal []转换为string []?我可以用吗

Array.ConvertAll()

方法来完成这个任务?

Jon*_*eet 12

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

string[] strings = Array.ConvertAll(numbers, x => x.ToString());
Run Code Online (Sandbox Code Playgroud)

LINUX:效率稍差,但更具惯用性和灵活性,可以使用LINQ:

string[] strings = numbers.Select(x => x.ToString()).ToArray();
Run Code Online (Sandbox Code Playgroud)

或者,如果您实际上不需要数组,并且很高兴每次迭代时都执行字符串转换:

IEnumerable<string> strings = numbers.Select(x => x.ToString());
Run Code Online (Sandbox Code Playgroud)

这里的灵活性numbers可以改为任何 IEnumerable<decimal> - 所以如果你改为使用a List<decimal>,你就不需要改变这个转换代码了.

调用时效率的轻微损失是调用ToArray的结果Select是一个懒惰评估的序列,它不知道它的大小开始 - 因此它不能立即知道输出数组的确切大小,而ConvertAll显然是这样.

  • @SonerGönül这可能是为了阻止Jon的I-get-it-all体验:) (2认同)

Son*_*nül 5

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

string[] string_array = Array.ConvertAll(decimal_array, x => x.ToString());
Run Code Online (Sandbox Code Playgroud)

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);
}
Run Code Online (Sandbox Code Playgroud)

输出将是;

System.String - 1.1
System.String - 1.2
System.String - 1.3
System.String - 1.4
Run Code Online (Sandbox Code Playgroud)

这是一个DEMO.