1. 查詢數據庫具有相同列結構的結果時,可以用union合併多條查詢語句進行查詢,可直接得出相應datatable
2. 查詢數據庫具有不同列的結果需要合併時,可以採用合併datatable的方法
//合併2個DT
DataTable dt3 = dt1.Clone(); //創建新表從第一個表複製結構,clone沒有行數據,只有列結構
for( int i = 0 ;i < dt2.Columns.Count ;i ++ )
{
//使新表同時具備兩個表的列數總和
dt3.Columns.Add( dt2.Columns[i].ColumnName ) ;
}
//複製表一的數據到新表,使新表具有和表一一樣的行數
object[] obj = new object[dt3.Columns.Count];
for (int i = 0; i < dt1.Rows.Count; i++)
{
dt1.Rows[i].ItemArray.CopyTo(obj,0);
dt3.Rows.Add(obj);
}
//表二行數據少,直接複製數據到新表
if( dt1.Rows.Count >= dt2.Rows.Count )
{
for( int i = 0 ;i < dt2.Rows.Count ;i++ )
{
for( int j = 0 ;j < dt2.Columns.Count ;j ++ )
{
dt3.Rows[i][j+dt1.Columns.Count] = dt2.Rows[i][j].ToString() ;
}
}
}
//表二行數據多,添加差的行數,再複製數據到新表
else
{
DataRow dr3 ;
for( int i = 0 ;i < dt2.Rows.Count - dt1.Rows.Count ;i ++ )
{
dr3 = dt3.NewRow() ;
dt3.Rows.Add( dr3 ) ;
}
for( int i = 0 ;i < dt2.Rows.Count ;i++ )
{
for( int j = 0 ;j < dt2.Columns.Count ;j ++ )
{
dt3.Rows[i][j+dt1.Columns.Count] = dt2.Rows[i][j].ToString() ;
}
}
}