C#のLINQの関数であるToList()
の使い方についてです。
配列やリストなどのシーケンスからリストを作ることが出来ます。
この記事には.NET Framework 4.6.1を使用しています。
リストを作る!
リストが欲しい!
手元に配列やIEnumerable<T>
はあるけど、俺が欲しいのはList<T>
なんだ!
そんなときはLINQのToList()
を使うことで、願望をかなえることが出来ます。
public static List<TSource> ToList<TSource>( this IEnumerable<TSource> source );
Enumerable.ToList(TSource) メソッド (IEnumerable(TSource)) (System.Linq)
使い方は簡単で、IEnumerable<T>
を継承したクラスがToList()
を呼ぶだけ。
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[] { "正一郎", "清次郎", "誠三郎", "征史郎" }; // 全部リストに変えちゃえ! List<float> listA = dataA.ToList(); List<int> listB = dataB.ToList(); List<string> listC = dataC.ToList(); // 結果発表 System.Console.WriteLine( "dataA:{0}", dataA.Text() ); System.Console.WriteLine( "listA:{0}", listA.Text() ); System.Console.WriteLine( "dataB:{0}", dataB.Text() ); System.Console.WriteLine( "listB:{0}", listB.Text() ); System.Console.WriteLine( "dataC:{0}", dataC.Text() ); System.Console.WriteLine( "listC:{0}", listC.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],
listA:[0.1], [2.3], [6.7],
dataB:[0], [1], [2], [3], [4], [5], [6], [7], [8], [9],
listB:[0], [1], [2], [3], [4], [5], [6], [7], [8], [9],
dataC:[正一郎], [清次郎], [誠三郎], [征史郎],
listC:[正一郎], [清次郎], [誠三郎], [征史郎],
List<T>
からList<T>
を作る事だってできちゃいます。
是非ともToList()
を七兆回ほど使って、世の中をリストだらけにしてみてください。
LINQのリンク
LINQ一覧
www.urablog.xyzToArray
配列に変換したい!
www.urablog.xyzToDictionary
Dictionary型に変換したい!
www.urablog.xyz