Kiến thức

Hàm gộp 2 datatable là 1 datatable – GÓC LẬP TRÌNH

Hàm gộp 2 datatable là 1 datatable

Không tìm được hàm tương ứng nên viết 1 hàm để gộp 2 datatable là 1 datatable.

Các ví dụ tìm kiếm trên mạng thì phải inner join theo 1 điều kiện nào đó. Nhưng 2 bảng này không có thuộc tính chung nên không inner join được.

Mình muốn cộng 2 bảng với nhau: Cộng các cột để ra bảng mới

/// <summary>
/// Gộp 2 bảng làm 1 bảng
/// </summary>
/// <param name=”dt1″></param>
/// <param name=”coldt1″>Số lượng của cột trong bảng 1</param>
/// <param name=”dt2″></param>
/// <param name=”coldt2″>số lượng cột của bảng 2</param>
/// <returns></returns>
public DataTable joinTable(DataTable dt1,int coldt1, DataTable dt2,int coldt2)
{
DataTable dt = new DataTable();

foreach (DataColumn dataColumn in dt1.Columns)
{
dt.Columns.Add(dataColumn.ColumnName);
}

for (int i = 0; i < dt1.Rows.Count; i++)
{
DataRow dr = dt.NewRow();
for (int ii = 0; ii < coldt1; ii++)
{

string a = dt1.Rows[i][ii].ToString();
dr[ii] = dt1.Rows[i][ii].ToString();
}

dt.Rows.Add(dr);
}
int nextCol = coldt1 + coldt2;
foreach (DataColumn dataColumn in dt2.Columns)
{
dt.Columns.Add(dataColumn.ColumnName);
}

//Nếu chưa có dòng mới vì số dòng của bảng 2 > số dòng bảng 1 thì thêm dòng mới
if (coldt1 < coldt2)
{
for (int i = 0; i < dt2.Rows.Count; i++)
{

for (int ii = coldt1; ii < nextCol; ii++)
{
dt.Rows[i][ii] = dt2.Rows[i][ii – coldt1].ToString();
string a = dt2.Rows[i][ii – coldt1].ToString();

}

}
}
else
{
for (int i = 0; i < dt2.Rows.Count; i++)
{
if (i>=dt1.Rows.Count)
{
DataRow dr = dt.NewRow();

for (int ii = coldt1; ii < nextCol; ii++)
{
//dt.Rows[i][ii] = dt2.Rows[i][ii – coldt1].ToString();
//string a = dt2.Rows[i][ii – coldt1].ToString();
dr[ii] = dt2.Rows[i][ii-coldt1].ToString();
}
dt.Rows.Add(dr);

}
else
{
for (int ii = coldt1; ii < nextCol; ii++)
{
dt.Rows[i][ii] = dt2.Rows[i][ii – coldt1].ToString();
string a = dt2.Rows[i][ii – coldt1].ToString();

}
}

}
}
return dt;
}

 

  • C# nâng cao

Chuyên mục: Kiến thức

Related Articles

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Check Also
Close
Back to top button