C#のLINQの関数であるToArray()
の使い方についてです。
配列やリストなどのシーケンスから配列を作ることが出来ます。
この記事には.NET Framework 4.6.1を使用しています。
配列を作る!
配列が欲しい!
手元にList<T>
やIEnumerable<T>
はあるけど、俺が欲しいのは配列なんだ!
そんなときはLINQのToArray()
を使うことで、願望をかなえることが出来ます。
public static TSource[] ToArray<TSource>( this IEnumerable<TSource> source );
Enumerable.ToArray(TSource) メソッド (IEnumerable(TSource)) (System.Linq)
使い方は簡単で、IEnumerable<T>
を継承したクラスがToArray()
を呼ぶだけ。
Program.cs
using System.Linq; using System.Collections; using System.Collections.Generic; public static class Program { static void Main( string[] args ) { // いろんなデータを……。 List<float> dataA = new List<float>() { 0.1f, 2.3f, 6.7f }; IEnumerable<int> dataB = Enumerable.Range( 0, 10 ); string[] dataC = new string[] { "正一郎", "清次郎", "誠三郎", "征史郎" }; // 全部配列に変えちゃえ! float[] arrayA = dataA.ToArray(); int[] arrayB = dataB.ToArray(); string[] arrayC = dataC.ToArray(); // 結果発表 System.Console.WriteLine( "dataA :{0}", dataA.Text() ); System.Console.WriteLine( "arrayA:{0}", arrayA.Text() ); System.Console.WriteLine( "dataB :{0}", dataB.Text() ); System.Console.WriteLine( "arrayB:{0}", arrayB.Text() ); System.Console.WriteLine( "dataC :{0}", dataC.Text() ); System.Console.WriteLine( "arrayC:{0}", arrayC.Text() ); // 入力待ち用 System.Console.ReadKey(); } /// <summary> /// 簡易的なシーケンスのテキスト取得処理 /// </summary> public static string Text( this IEnumerable i_source ) { string text = string.Empty; foreach( var value in i_source ) { text += string.Format( "[{0}], ", value ); } return text; } } // class Program
dataA :[0.1], [2.3], [6.7],
arrayA:[0.1], [2.3], [6.7],
dataB :[0], [1], [2], [3], [4], [5], [6], [7], [8], [9],
arrayB:[0], [1], [2], [3], [4], [5], [6], [7], [8], [9],
dataC :[正一郎], [清次郎], [誠三郎], [征史郎],
arrayC:[正一郎], [清次郎], [誠三郎], [征史郎],
配列から配列を作る事だってできちゃいます。
是非ともToArray()
を七兆回ほど使って、世の中を配列だらけにしてみてください。
LINQのリンク
LINQ一覧
www.urablog.xyzToList
List型に変換したい!
www.urablog.xyzToDictionary
Dictionary型に変換したい!
www.urablog.xyz