trapemiyaの日記

hatenablogが新しくなったんで新規一転また2019年1月からちょこちょこ書いてます。C#中心のプログラミングに関するお話です。

 【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