1

複数のテーブルを 1 つに結合するにはどうすればよいですか?

列名を持つ 3 つのデータテーブルがあります。Test 1, Test 2 and Test3

Datatables は、値を持つ 3 つの行を取得しました。

以下の例のように、それらを1つのデータテーブルに入れたい

TEST 1  |  TEST2  |  TEST 3

マージ機能を試しましたがdt1.merge(dt2)、すべての列に 3 行追加されます。

用の表ですDataGridView

これは、データベースからテーブルを取得する方法のコード例です。

            string queryStatusTest =
               "SELECT status AS 'uppgift " + t +"' FROM b_personuppgift
                        WHERE uppgiftid IN(SELECT uppgiftid FROM b_uppgift
                                                   WHERE kursid = 'ABC123') "
                  + "AND uppgiftid=" + t + " ORDER BY uppgiftid";
            DataTable dTest = dataBase.Select(queryStatusTest);

このdatabase.Select()関数は 1 つのテーブルのみを返します。

4

3 に答える 3

0

この問題の最も一般的な理由は、DataTable に主キーを設定していないことです。Merge メソッドは、主キーを使用して行を照合します。

MSDNのMerge メソッドのドキュメントには、次のように記載されています。

新しいソース DataTable をターゲットにマージする場合、DataRowState 値が Unchanged、Modified、または Deleted であるソース行は、同じ主キー値を持つターゲット行と照合されます。Added の DataRowState 値を持つソース行は、新しいソース行と同じ主キー値を持つ新しいターゲット行と照合されます。

于 2012-09-25T11:13:22.147 に答える
0

データベースと言ってtableを意味すると思います。次のステートメントを使用して、3 つのテーブルすべてのデータを 1 つに挿入できます。

INSERT INTO table_all(column1,column2,column3) 
VALUES( 
  (SELECT column1 FROM test1),
  (SELECT column1 FROM test2),
  (SELECT column1 FROM test3),
)
于 2012-09-25T10:51:05.697 に答える
0

3 つの列の型が文字列であると仮定します。

var mergeTable = dt1.AsEnumerable()
     .Concat(dt2.AsEnumerable())
     .Concat(dt3.AsEnumerable())
     .GroupBy(row => new { 
                        Test1 = row.Field<string>("Test1")
                        Test2 = row.Field<string>("Test2") 
                        Test3 = row.Field<string>("Test3") 
                        })

     .Select(g => g.First())
     .CopyToDataTable();
于 2012-09-25T11:16:18.293 に答える