今回のテーマ
こんにちは、サルモリです。
今回は下記のテーマ下記について書いていきます。
今回のテーマ
DataTable型のデータでLinqを使用する方法
DataTable型でLinqを使用する方法を学びましょう。
Linqが使用できるということは、配列やリストにすることも簡単にできますね。
それでは、やっていきましょう!!
Linqを使用する方法
早速、DataTableの型にLinqを使用してみましょう!!
Linqを使用できるようにするには、AsEnumerableメソッドを使用します。
下記のソースコードをみてください!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
using System; using System.Data; using System.Linq; class Program { static void Main(string[] args) { DataTable dt = new DataTable("Robot"); dt.Columns.Add("Name"); dt.Columns.Add("Maker"); dt.Columns.Add("Color"); DataRow dr = dt.NewRow(); dr["Name"] = "Rockman"; dr["Maker"] = "Dr_Light"; dr["Color"] = "Blue"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["Name"] = "Rollchan"; dr["Maker"] = "Dr_Light"; dr["Color"] = "Pink"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["Name"] = "Fireman"; dr["Maker"] = "Dr_Wily"; dr["Color"] = "Red"; dt.Rows.Add(dr); //名前の列を抽出し、リスト化 var namelist = dt.AsEnumerable().Select(n => n["Name"]).ToList(); foreach(var name in namelist) { Console.WriteLine(name); } } } |
出力結果
Rockman
Rollchan
Fireman
Linqで名前項目を抽出し、リスト化することができました。
この例のようにAsEnumerableメソッドを使用すれば、簡単にLinqを使用することが可能です。
変換したLinqに対して、他のメソッドも使用してみる
Linqを使用できるようにしたのでもちろん他のメソッドも使用できます。
例をみてみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
using System; using System.Data; using System.Linq; class Program { static void Main(string[] args) { DataTable dt = new DataTable("Robot"); dt.Columns.Add("Name"); dt.Columns.Add("Maker"); dt.Columns.Add("Color"); DataRow dr = dt.NewRow(); dr["Name"] = "Rockman"; dr["Maker"] = "Dr_Light"; dr["Color"] = "Blue"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["Name"] = "Rollchan"; dr["Maker"] = "Dr_Light"; dr["Color"] = "Pink"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["Name"] = "Fireman"; dr["Maker"] = "Dr_Wily"; dr["Color"] = "Red"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["Name"] = "Iceman"; dr["Maker"] = "Dr_Wily"; dr["Color"] = "Red"; dt.Rows.Add(dr); //名前の列を抽出し、リスト化 var namelist = dt.AsEnumerable().Where(n => n["Maker"] == "Dr_Wily") .Select(n => n["Name"]).ToList(); foreach(var name in namelist) { Console.WriteLine(name); } } } |
出力結果
Fireman
Iceman
Whereメソッドも使用してワイリー博士のメソッドのみ抽出できましたね!!
DataTable型は比較的扱いにくい方はすぐに変換してしまうのもいい選択肢と思います。
全ての値をリスト化したい方は下記の記事をみてください。
まとめ
今回はDataTable型をLinqに変換する方法を学びました。
この方法を学べばDataTable型のデータを好きなように出来ること間違いなしです!!
それでは最後までみてくれてありがとうございました。