連線兩個DataTable表

2021-04-29 16:35:58 字數 2164 閱讀 4540

在c#中把兩個datatable連線起來,相當於sql的inner join方法

public static datatable join (datatable first, datatable second, datacolumn fjc, datacolumn sjc)

);datacolumn parentcolumns = new datacolumn[fjc.length];

for(int i = 0; i < parentcolumns.length; i++)

parentcolumns[i] = ds.tables[0].columns[fjc[i].columnname];

datacolumn childcolumns = new datacolumn[sjc.length];

for(int i = 0; i < childcolumns.length; i++)

childcolumns[i] = ds.tables[1].columns[sjc[i].columnname];

//建立關聯

datarelation r = new datarelation(string.empty,parentcolumns,childcolumns,false);

ds.relations.add(r);

//為關聯表建立列

for(int i = 0; i < first.columns.count; i++)

table.columns.add(first.columns[i].columnname, first.columns[i].datatype);

for(int i = 0; i < second.columns.count; i++)

//看看有沒有重複的列,如果有在第二個datatable的column的列明後加_second

if(!table.columns.contains(second.columns[i].columnname))

table.columns.add(second.columns[i].columnname, second.columns[i].datatype);

else

table.columns.add(second.columns[i].columnname + "_second", second.columns[i].datatype);

}table.beginloaddata();

foreach(datarow firstrow in ds.tables[0].rows)

//得到行的資料

datarow childrows = firstrow.getchildrows(r);

if(childrows != null && childrows.length > 0)

object parentarray = firstrow.itemarray;

foreach(datarow secondrow in childrows)

object secondarray = secondrow.itemarray;

object joinarray = new object[parentarray.length+secondarray.length];

array.copy(parentarray,0,joinarray,0,parentarray.length);

array.copy(secondarray,0,joinarray,parentarray.length,secondarray.length);

table.loaddatarow(joinarray,true);

table.endloaddata();

return table;

public static datatable join (datatable first, datatable second, datacolumn fjc, datacolumn sjc)

return join(first, second, new datacolumn, new datacolumn);

public static datatable join (datatable first, datatable second, string fjc, string sjc)

return join(first, second, new datacolumn, new datacolumn);}}

合併兩個DataTable

方法1 sqlconnection myconnection new sqlconnection server localhost uid sa pwd database wjoa string sql1 select from resoursemanage t sqldataadapter ada...

外連線組合兩個表

表1 person 列名 型別 personid int firstname varchar lastname varchar personid 是上表主鍵 表2 address 列名 型別 addressid int personid int city varchar state varchar ...

實現兩個表的自然連線

typedef int elemtype 兩個表的元素都是正整數 void createtable 建立表 void destorytable 銷毀表 void disptable 顯示表中的元素 void linktable 兩個表的自然連線 單鏈表中的資料節點型別 typedef struct ...