C#
[C#] Datatable Merge 하기
kjun.kr
2023. 6. 29. 12:57
728x90
두개의 테이블을 옆으로 붙여 하나의 테이블로 반환하는 코드입니다.
public static DataTable MergeTables(this DataTable sourceDt, DataTable destDt)
{
if (sourceDt == null || destDt == null)
{
throw new ArgumentNullException("sourceDt, destDt", "Both tables must not be null");
}
DataTable resultDt = sourceDt.Clone();
foreach (DataColumn col in destDt.Columns)
{
string newColumnName = col.ColumnName;
int colNum = 1;
// 컬럼이 존재하는 경우 새로운 컬럼 생성
while (resultDt.Columns.Contains(newColumnName))
{
newColumnName = $"{col.ColumnName}_{++colNum}";
}
resultDt.Columns.Add(newColumnName, col.DataType);
}
var mergedRows = sourceDt.AsEnumerable().Zip(destDt.AsEnumerable(), (r1, r2) => r1.ItemArray.Concat(r2.ItemArray).ToArray());
foreach (object?[] rowFields in mergedRows)
{
resultDt.Rows.Add(rowFields);
}
return resultDt;
}
아래 두테이블을 합치면
A | B | C |
1 | 2 | 3 |
4 | 5 | 6 |
C | D |
가 | 1 |
나 | 2 |
다 | 3 |
결과
A | B | C | C1 | D |
1 | 2 | 3 | 가 | 1 |
4 | 5 | 6 | 나 | 2 |
다 | 3 |
728x90