2014-11-17 41 views
1

我試圖合併2個數據表,如this。但是我的表有不同的模式和不同數量的行。所以我在這裏得到一個錯誤:使用DataRelation合併2個不同的數據表

DataRelation drel = new DataRelation("EquiJoin",cr1, cr2, true); 
    dataSet.Relations.Add(drel);//error 

據我所知,因爲第一個表比第二個表有更多的行。

Error: Cannot evaluate expression because a native frame is on top of the call stack. 

表如下所示:

  snowFlake.PrimaryKey = new DataColumn [] { snowFlake.Columns[IndexesField.F_LINK_ID], snowFlake.Columns[IndexesField.F_TABKEY] }; 
      snow.PrimaryKey = new DataColumn [] { snow.Columns[IndexesField.F_LINK_ID], snow.Columns[IndexesField.F_TABKEY] }; 
      DataColumn[] cr1 = { snowFlake.Columns[IndexesField.F_LINK_ID], snowFlake.Columns[IndexesField.F_TABKEY] }; 
      DataColumn[] cr2 = { snow.Columns[IndexesField.F_LINK_ID], snow.Columns[IndexesField.F_TABKEY] }; 

我怎樣才能解決這個問題:

snowFlake:        snow: 
f_text | f_link_id | f_tabkey | | f_text | f_link_id | f_tabkey | 
--------+---------------+-------------| |---------+---------------+-------------| 
row1 | 100001  |  1  | | -  | 100000  |  1  | 
row2 | 100001  |  2  | | +  | 100001  |  1  | 
row3 | 100001  |  3  | | -  | 100001  |  2  | 
row4 | 100002  |  1  | | +  | 100001  |  3  | 
row5 | 100003  |  1  | | +  | 100002  |  1  | 
              | +  | 100003  |  1  | 
              | -  | 100003  |  1  | 
              | +  | 100004  |  1  | 
              | -  | 100005  |  1  | 

,我使用的主鍵?

問候,亞歷山大。

+0

究竟是什麼錯誤? –

回答

0

如果它們沒有相同數量的行,則無關緊要,因爲它們通過關係進行連接,從而模仿TSQL的Inner Join行爲。在沒有告訴我們具體錯誤的情況下,人們只能假設你沒有正確定義要加入的鍵(例如,你在關係中指定的列不存在)。

相關問題