|
■No81800 (夜叉丸 さん) に返信 > Main のデータにSub を JOIN して以下のデータを取得します。
サーバー側に再問い合わせしたり、LINQ を使ってみるなど、 やり方はいろいろと考えられますが、現時点で Main / Sub のデータを既に DataSet に読み込んでいるならば、 一つの DataSet 上に DataRelation を貼っておき、 Sub 側に「親テーブルの NUM 列」を式列として追加するのが 手っ取り早い気がします。
// 一つの DataSet 内に二つのDataTable var ds = new DataSet(); var tblM = ds.Tables.Add("dbo.Main"); var tblS = ds.Tables.Add("dbo.Sub");
// このあたりはテーブル定義なので、 // 型付きDataSet を使うのならば意識しなくてOK tblM.PrimaryKey = new DataColumn[] { tblM.Columns.Add("NAME") }; tblM.Columns.Add("NUM", typeof(decimal));
tblS.Columns.Add("NAME"); tblS.PrimaryKey = new DataColumn[] { tblS.Columns.Add("SUBNAME") };
// とりあえず実験用データの登録 tblM.Rows.Add("A", 1m); tblM.Rows.Add("B", 2m); tblM.AcceptChanges(); tblS.Rows.Add("A", "a1"); tblS.Rows.Add("A", "a2"); tblS.Rows.Add("B", "b1"); tblS.Rows.Add("B", "b2"); tblS.AcceptChanges();
// ここから本題 // JOIN 操作のために式列(Expression Column)を利用してみます ds.Relations.Add("Main_Sub", tblM.Columns["NAME"], tblS.Columns["NAME"]); tblS.Columns.Add("NUM", tblM.Columns["NUM"].DataType, "Parent.NUM");
これで、tblS 上に、NAME, SUBNAME, NUM の 3 列が構成されます。 (DataRelation は、型付き DataSet 上であらかじめ構築しておくこともできます)
|