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
'C#' 카테고리의 다른 글
[C#] dotnet ef 명령어 사용 (0) | 2023.06.30 |
---|---|
[C#] Python 의 numpy 함수를 C# 에서 사용하고 싶을 때 NumSharp (0) | 2023.06.29 |
[C#] 구조체를 json 문자열로 CRUD 하기 (0) | 2023.06.28 |
[C#] 로또 번호 추출하기 (0) | 2023.06.28 |
[C#] Entity Framework Core 에서 필드 Auto Increment 필드 처리하기 (0) | 2023.06.18 |