ぜひこちらの記事もご覧ください!!
転職回数4回(独立系⇒メーカー系⇒社内SE⇒SES)の私がSESのメリットについて書きました!
今回のテーマ
今回の記事は下記の記事の続きです。まだ見てない方は是非みてくださいね。
こちらもCHECK
-
-
C# Linq使い必見!!DataTable型のデータでLinqを使用する方法 AsEnumerableメソッドを使用します
ぜひこちらの記事もご覧ください!! 転職回数4回(独立系⇒メーカー系⇒社内SE⇒SES)の私がSESのメリットについて書きました! SESで働いている私の年収と働き方 今回のテーマ こんにちは、サルモ ...
続きを見る
今回のテーマ
DataTable型の全データをリスト化する方法
前回の記事を読んで頂いた方、1つ疑問を持ちませんでしたか??
DataTable型の1項目しかリスト化できないじゃん!!ってことです。
確かに前回の記事の内容では1項目しかリスト化できません。
なので、今回の記事ではタプルを使用して、DataTable型の全てのデータをリスト化してみましょう!!
DataTable型の全てのデータをリスト化する
それではやっていきます!!ロボットテーブルに項目を4つ指定して、リスト化してみます。
下記のソースコードをみてください。
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 42 43 44 45 46 47 48 49 |
using System; using System.Collections.Generic; 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"); dt.Columns.Add("Strength"); DataRow dr = dt.NewRow(); dr["Name"] = "Rockman"; dr["Maker"] = "Dr_Light"; dr["Color"] = "Blue"; dr["Strength"] = "5"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["Name"] = "Rollchan"; dr["Maker"] = "Dr_Light"; dr["Color"] = "Pink"; dr["Strength"] = "1"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["Name"] = "Fireman"; dr["Maker"] = "Dr_Wily"; dr["Color"] = "Red"; dr["Strength"] = "3"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["Name"] = "Iceman"; dr["Maker"] = "Dr_Wily"; dr["Color"] = "Red"; dr["Strength"] = "4"; dt.Rows.Add(dr); //全ての列をタプルに定義 var namelist = dt.AsEnumerable() .Select(n => (n["Name"].ToString(), n["Maker"].ToString(), n["Color"].ToString(), n["Strength"].ToString())) .ToList(); foreach(var name in namelist) { Console.WriteLine(name.Item1 + ":" + name.Item2 + ":" + name.Item3 + ":" + name.Item4); } } } |
出力結果
Rockman:Dr_Light:Blue:5
Rollchan:Dr_Light:Pink:1
Fireman:Dr_Wily:Red:3
Iceman:Dr_Wily:Red:4
リストとタプルを組み合わせて、DataTable型の全ての項目を出力することができましたね。
このようにリストとタプルを組み合わせることで、自由にLinqを使用することができます!
各項目を見やすくする為にタプルを修正
上記のようにタプルに各項目の値を設定すれば、DataTable内の全てのデータを
使うことはできるのですが、後のことを考えて下記のようにしたほうが良いと思います。
タプルの定義をvar型にすることをやめ、具体的に明示したほうが使用する時にミスが減ります。
Item1、Item2では何を指定しているか分かりにくいですからね。
少し長くなるけど、そこは頑張ってください。

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 42 43 44 45 46 47 48 49 |
using System; using System.Collections.Generic; 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"); dt.Columns.Add("Strength"); DataRow dr = dt.NewRow(); dr["Name"] = "Rockman"; dr["Maker"] = "Dr_Light"; dr["Color"] = "Blue"; dr["Strength"] = "5"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["Name"] = "Rollchan"; dr["Maker"] = "Dr_Light"; dr["Color"] = "Pink"; dr["Strength"] = "1"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["Name"] = "Fireman"; dr["Maker"] = "Dr_Wily"; dr["Color"] = "Red"; dr["Strength"] = "3"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["Name"] = "Iceman"; dr["Maker"] = "Dr_Wily"; dr["Color"] = "Red"; dr["Strength"] = "4"; dt.Rows.Add(dr); //全ての列をタプルに定義 List<(string Name, string Maker, string Color, string Strength)> namelist = dt.AsEnumerable() .Select(n => (n["Name"].ToString(), n["Maker"].ToString(), n["Color"].ToString(), n["Strength"].ToString())) .ToList(); foreach(var name in namelist) { Console.WriteLine(name.Name + ":" + name.Maker + ":" + name.Color + ":" + name.Strength); } } } |
出力結果
Rockman:Dr_Light:Blue:5
Rollchan:Dr_Light:Pink:1
Fireman:Dr_Wily:Red:3
Iceman:Dr_Wily:Red:4
まとめ
今回の記事は以上で終わりです。
DataTable型が使いにくい!!という方は是非上記のソースコードを参考にして、
リストとタプルの組み合わせを使ってみてください!!
因みに今回のようにDataTable型の全てのデータを変換する方法にリストとクラスを組み合わせる方法もあります。
それは次回の記事で取り上げますので、是非下記の記事もみてください。
こちらもCHECK
-
-
C# DataTable型を使用するのに飽き飽きしてる方必見!!パート2 DataTable型の全てのデータをリスト化する方法!!さらにListとクラスを使いこなそう!
ぜひこちらの記事もご覧ください!! 転職回数4回(独立系⇒メーカー系⇒社内SE⇒SES)の私がSESのメリットについて書きました! SESで働いている私の年収と働き方 今回のテーマ こんにちは、サルモ ...
続きを見る
それでは、最後までみて頂きありがとうございました。

ぜひこちらの記事もご覧ください!!
転職回数4回(独立系⇒メーカー系⇒社内SE⇒SES)の私がSESのメリットについて書きました!
私は下記のサイトで現在の働き方、フルリモート(週5)の企業に出会うことができました。
今でもとても感謝しています!カウンセリングは無料なので、ぜひどうぞ!