今回のテーマ
こんにちは、サルモリです。
今回もDataTable型についてやっていきます!!
今回のテーマは下記についてです。
今回のテーマ
DataTable型に主キーを追加する方法
今回は主キーを追加する方法について解説していきます!
主キーを指定することで検索するメソッドも使えるようになるので、一緒に覚えてしまいましょう!
サルモリ
主キーの追加方法を覚えよう!
DataTable型への主キーの追加方法
主キーを追加するにはDataTable型のPrimaryKeyプロパティに追加したい列を指定するだけです。
例のソースコードをみてみましょう。今回はRobotIDを割り振って、主キーにしたいと思います。
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 |
using System; using System.Data; class Program { static void Main(string[] args) { DataTable dt = new DataTable("Robot"); dt.Columns.Add("RobotID"); dt.Columns.Add("Name"); dt.Columns.Add("Maker"); dt.Columns.Add("Color"); //主キーを設定する dt.PrimaryKey = new DataColumn[] { (dt.Columns["RobotID"]) }; DataRow dr = dt.NewRow(); dr["RobotID"] = 1; dr["Name"] = "Rockman"; dr["Maker"] = "Dr_Light"; dr["Color"] = "Blue"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["RobotID"] = 2; dr["Name"] = "Rollchan"; dr["Maker"] = "Dr_Light"; dr["Color"] = "Pink"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["RobotID"] = 10; dr["Name"] = "Fireman"; dr["Maker"] = "Dr_Wily"; dr["Color"] = "Red"; dt.Rows.Add(dr); foreach(DataRow robot in dt.Rows) { Console.WriteLine(robot["RobotID"] + ":" + robot["Name"]); } } } |
command
1:Rockman
2:Rollchan
10:Fireman
主キーを追加することができましたね。次は主キーの値で検索してみましょう。
主キーの検索方法
Findメソッド
主キーを設定することでFindメソッドを使用することができます。
使い方は簡単です。主キーの値をFindメソッドの引数に設定するだけです。
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 |
using System; using System.Data; class Program { static void Main(string[] args) { DataTable dt = new DataTable("Robot"); dt.Columns.Add("RobotID"); dt.Columns.Add("Name"); dt.Columns.Add("Maker"); dt.Columns.Add("Color"); //主キーを設定する dt.PrimaryKey = new DataColumn[] { (dt.Columns["RobotID"]) }; DataRow dr = dt.NewRow(); dr["RobotID"] = 1; dr["Name"] = "Rockman"; dr["Maker"] = "Dr_Light"; dr["Color"] = "Blue"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["RobotID"] = 2; dr["Name"] = "Rollchan"; dr["Maker"] = "Dr_Light"; dr["Color"] = "Pink"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["RobotID"] = 10; dr["Name"] = "Fireman"; dr["Maker"] = "Dr_Wily"; dr["Color"] = "Red"; dt.Rows.Add(dr); //Findメソッドで検索結果を出力 Console.WriteLine(dt.Rows.Find(1)["Name"]); Console.WriteLine(dt.Rows.Find(10)["Name"]); Console.WriteLine(dt.Rows.Find(2)["Maker"]); } } |
出力結果
Rockman
Fireman
Dr_Light
指定した列の値が出力されていますね。
Containsメソッド
続けてContainsメソッドです。引数に値を設定し、値の有無を返してくれます。
ソースコードの例をみてみましょう。
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 |
using System; using System.Data; class Program { static void Main(string[] args) { DataTable dt = new DataTable("Robot"); dt.Columns.Add("RobotID"); dt.Columns.Add("Name"); dt.Columns.Add("Maker"); dt.Columns.Add("Color"); //主キーを設定する dt.PrimaryKey = new DataColumn[] { (dt.Columns["RobotID"]) }; DataRow dr = dt.NewRow(); dr["RobotID"] = 1; dr["Name"] = "Rockman"; dr["Maker"] = "Dr_Light"; dr["Color"] = "Blue"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["RobotID"] = 2; dr["Name"] = "Rollchan"; dr["Maker"] = "Dr_Light"; dr["Color"] = "Pink"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["RobotID"] = 10; dr["Name"] = "Fireman"; dr["Maker"] = "Dr_Wily"; dr["Color"] = "Red"; dt.Rows.Add(dr); //Containsメソッドで検索結果を出力 Console.WriteLine(dt.Rows.Contains(1)); Console.WriteLine(dt.Rows.Contains(2)); Console.WriteLine(dt.Rows.Contains(3)); } } |
出力結果
True
True
False
今回の場合、1と2は主キーに存在しているのでTrue、3は存在していないのでFalseを返しています。
まとめ
今回はDataTable型の主キーの設定と検索方法を学びました。
主キーを付けると検索が各段に楽になるので、
是非必要な場面があれば活用してみてください。
最後まで見て頂き、ありがとうございました。
サルモリ
最後までよんでくれてありがとう!
配列、リストなどの記事はこちら