我需要將十進制數組轉換爲字符串數組。如何將decimal []轉換爲string []?我可以使用如何將十進制數組轉換爲C#中的字符串數組?
Array.ConvertAll()
方法來完成這個任務?
我需要將十進制數組轉換爲字符串數組。如何將decimal []轉換爲string []?我可以使用如何將十進制數組轉換爲C#中的字符串數組?
Array.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();
希望這有助於
是的,你可以使用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
顯然。
爲什麼ConvertAll更高效。我正要問,但只是看到你的編輯 – Habib 2013-04-18 06:08:04
這是如何可能這個問題不被接受? :)這更詳細。 – 2013-04-18 06:31:17
@SonerGönül這可能是一種試圖阻止Jon的I-get-it-all體驗:) – TheBlastOne 2013-04-18 06:36:48
你必須創建新的數組finnaly,所以只需遍歷這個數組。 – Guy 2013-04-18 06:02:58
@Guy:那麼Array.ConvertAll會爲你做... – 2013-04-18 06:04:35
嘗試它或閱讀文檔不是一個很大的努力:http://msdn.microsoft.com/pl-pl/library/exc45z53.aspx。無論如何,該方法將工作。 – 2013-04-18 06:05:12