0

i need to convert Decimal array to string array . How to convert decimal[] to string[] ? Can i use

Array.ConvertAll()

method to do this task?

4

3 回答 3

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可以更改为any IEnumerable<decimal> - 例如,如果您更改为使用 a List<decimal>,则无需更改此转换代码。

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

于 2013-04-18T06:03:03.807 回答
5

当然你可以使用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.

于 2013-04-18T06:03:15.483 回答
2

尝试这个

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

希望这可以帮助

于 2013-04-18T06:03:03.717 回答