- - PR -
C# DataTableの列に独自の型を定義できますか
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-11-18 21:56
System.Data.Datatableの列に事前定義型よりも現実に近い制約を反映した型を定義したい時があります。
★質問 System.Data.Datatableの列にenum型あるいは独自の型を定義することが可能ですか? 定義例 ・都道府県名 ・月度(1〜12)性別(男、女、不明) ・試験の平均点(0.0〜100.0) | ||||
|
投稿日時: 2007-11-19 10:23
ドキュメントは見ましたか?
Add するときに 型 を指定するとかではなく? http://msdn2.microsoft.com/ja-jp/library/system.data.datacolumncollection.add(VS.80).aspx _________________ かるあ のメモ と スニペット | ||||
|
投稿日時: 2007-11-19 13:43
ご回答ありがとうございます。
ご指摘の通り、Addメソッドで独自の型が指定できないので、質問した時点でダメな可能性が高いと思っていました。しかし、別の方法が準備されている可能性を考え、質問してみました。 XMLスキーマがきめ細かく制約を記述できるので、Datatableにもそのような機能があるかも知れないと期待しました。例えばenumのような制約を的確に表現したいと思いました。 | ||||
|
投稿日時: 2007-11-19 14:07
あれ?僕が勘違いしているのかな?
http://msdn2.microsoft.com/ja-jp/library/730zyedy(VS.80).aspx
とかじゃなくて?? データのバリデーションはここでやることかな?とも思うけれど。 _________________ かるあ のメモ http://karua.at.webry.info/ [ メッセージ編集済み 編集者: かるあ 編集日時 2007-11-19 14:07 ] | ||||
|
投稿日時: 2007-11-19 20:36
ご回答ありがとうございます。
オリジナル型を格納することができました。(汚いソースコードですが...) private void button1_Click(object sender, EventArgs e) { DataTable table1 = new DataTable("table1"); Test test1 = new Test(123); // Test型の列を定義 table1.Columns.Add("Test", test1.GetType()); // Test型のデータを格納 table1.Rows.Add(new Test(123)); table1.Rows.Add(new Test(456)); table1.Rows.Add(new Test(789)); // 確認 // 出力 123 456 789 (確かに格納できている) Test t1 = table1.Rows[0][0] as Test; Test t2 = table1.Rows[1][0] as Test; Test t3 = table1.Rows[2][0] as Test; int a = t1.Value; int b = t2.Value; int c = t3.Value; Console.WriteLine(a); Console.WriteLine(b); Console.WriteLine(c); } // オリジナル型 public class Test { public Test(int p) { _p = p; } private int _p; public int Value { get { return _p; } } } } |
1