當前位置:編程學習大全網 - 編程語言 - 2個DataTable的合並問題!! 急!!!!!!!!!

2個DataTable的合並問題!! 急!!!!!!!!!

答案:C#提供的merge函數只針對同類型的數據表;樓主這種情況需要自己定義壹個函數。

我做了壹個專門針對樓主這種情況的函數MergeDataTable()

樓主可以這樣調用:

Dt1 = MergeDataTable(Dt1, Dt2, "ID");

下面是函數定義:

/************************************************

** 函數名 : MergeDataTable

** 函數功能: 合並DataTable

** 入力參數:

** dt1 要合並的DataTable1

** dt2 要合並的DataTable2

** keyColName dt1與dt2聯系的關鍵列名

** 出力參數: none

** 返回值 :

** dtReturn 合並後的DataTable

** 作成者 : 悉雨辰寂

************************************************/

private DataTable MergeDataTable(DataTable dt1, DataTable dt2, String KeyColName)

{

//定義臨時變量

DataTable dtReturn = new DataTable();

int i=0;

int j=0;

int k=0;

int colKey1=0;

int colKey2=0;

//設定表dtReturn的名字

dtReturn.TableName = dt1.TableName;

//設定表dtReturn的列名

for(i=0; i<dt1.Columns.Count; i++){

if( dt1.Columns[i].ColumnName == KeyColName ){

colKey=i;

}

dtReturn.Columns.Add( dt1.Columns[i].ColumnName );

}

for(j=0; j<dt2.Columns.Count; j++){

if( dt1.Columns[j].ColumnName == KeyColName ){

colKey2=j;

continue;

}

dtReturn.Columns.Add( dt2.Columns[j].ColumnName );

}

//建立表的空間

for(i=0; i<dt1.Rows.Count; i++){

DataRow dr;

dr = dtReturn.NewRow();

dtReturn.Rows.Add(dr);

}

//將表dt1,dt2的數據寫入dtReturn

for(i=0; i<dt1.Rows.Count; i++){

int m=-1;

//表dt1的第i行數據拷貝到dtReturn中去

for(j=0; j<dt1.Columns.Count; j++){

dtReturn.Rows[i][j] = dt1.Rows[i][j].ToString();

}

//查找的dt2中KeyColName的數據,與dt1相同的行(即樓主兩個表中ID相同的行)

for(k=0; k<dt2.Rows.Count; k++){

if( dt1.Rows[i][colKey1].ToString() == dt1.Rows[k][colKey2].ToString() )}

m=k;

}

}

//表dt2的第m行數據拷貝到dtReturn中去,且不要KeyColName(ID)列

if( m!=-1 ){

for(k=0; k<dt2.Columns.Count; k++){

if( k==colKey2 ){

continue;

}

dtReturn.Rows[i][j] = dt2.Rows[m][k].ToString();

j++;

}

}

}

return dtReturn ;

}

函數配有註釋,應該很容易看明白。

悉雨辰寂

  • 上一篇:公司是怎麽篩選簡歷的
  • 下一篇:數控系統中模態指令有哪些?
  • copyright 2024編程學習大全網