【ADO.NET 2.0】DataView.ToTable メソッドでダミーカラムを作成できるか?
データテーブルにカラムを追加する場合、DataColumnCollection.Add メソッドを使いますが、新しいカラムは一番最後に追加されてしまいます。残念ながらこれは、ADO.NET 2.0でも、このメソッドのオーバーロードを見る限り、不可能のようです。
そこで、ADO.NET 2.0で追加された、DataView.ToTable メソッドを調べてみました。このメソッドは、データテーブルのDefaultViewから、新しいデータテーブルを作成するためのメソッドです。新しいデータテーブルを作成する段階で、任意のカラムだけを選ぶことができます。追加したいカラムだけを、カラム名で指定します。
こんな感じ。
DataTable newTable = view.ToTable(true, "カラム名1", "カラム名2");
最初のパラメータのtrueはdistinctの指定です。
というわけで、新しいデータテーブルを作成する段階で、ダミーのカラムを指定すれば、最初にカラムが追加できるのではないかと、淡い期待を持ちました。
DataTable newTable = view.ToTable(true, "ダミーカラム", "カラム名1", "カラム名2");
しかし、残念ながら、
列 'ダミーカラム' は基になるテーブル NewTable に属していません。
と言われる始末。ガ〜ン!やっぱり無理なのか・・・orz
今のところ、データテーブルの最後尾以外にカラムを追加するには、ADO.NET 1.1と同様に、
1.select '' as dummy1, * from TABLE としてダミーカラムを作成する。
2.ダミーカラムを追加した新しいデータテーブルを作成し、そちらにデータをコピーする。
みたいな感じでやるしかないですね・・・。
最後まで読んでもらったのに、この結末ですいません。m(_ _)m