如何在c#中将十进制数组转换为字符串数组
本文关键字:数组 转换 字符串 十进制 | 更新日期: 2023-09-27 18:09:40
我需要将十进制数组转换为字符串数组。如何将十进制[]转换为字符串[]?我可以使用
吗
Array.ConvertAll()
方法执行此任务?
是的,您可以非常简单地使用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
显然可以。
当然可以使用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
试试这个
decimal[] decArr = new decimal[5];
// ...
string[] strArr = decArr.Select(d => d.ToString("0.00")).ToArray();
希望能有所帮助