Decimal 配列を string 配列に変換する必要があります。decimal[] を string[] に変換する方法は? 使ってもいいですか
Array.ConvertAll()
このタスクを実行する方法は?
はい、Array.ConvertAll
非常に簡単に使用できます。変換デリゲートを提供するだけで済みます。これは、ラムダ式で最も簡単に実行できます。
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
メソッドも使えます。ラムダ式で簡単にできる会話が必要なだけです。
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();
お役に立てれば