[C# 문법] 서로 다른 2개의 DataTable Merge(병합) 하여 단일 행으로 만드는 방법
- C#/C# 문법
- 2021. 3. 14. 18:31
안녕하세요.
오늘은 C# 문법에서 서로 다른 2개의 DataTable을 병합하여 단일 행으로 만드는 방법에 대해서 알려 드리려고 합니다.
프로젝트를 하던 중, 해당 기능을 사용해야 하는 경우가 생겨서 구글링 하던 중 StackOverFlow에 찾은 메서드를 바탕으로 글을 작성하는 점, 즉 제가 구현한 게아니라 구현된 메서드를 이용해서 포스팅 하는 점 참고해 주시면 좋겠습니다!
여기서 발췌하여 테스트 하였습니다.
그럼 예제 코드를 작성해서 정말로 2개의 DataTable이 Merge가 되어 단일 행으로 되는지 보겠습니다.
예제 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
using System;
using System.Data;
using System.Linq;
namespace ConsoleApp4
{
class Program
{
static void Main(string[] args)
{
//첫 번째 DataTable
DataTable dt1 = new DataTable();
dt1.Columns.Add("이름", typeof(string));
dt1.Columns.Add("나이", typeof(int));
dt1.Rows.Add("범범조조", 29);
dt1.Rows.Add("아이유", 30);
//두 번째 DataTable
DataTable dt2 = new DataTable();
dt2.Columns.Add("성적", typeof(string));
dt2.Rows.Add("A");
dt2.Rows.Add("B+");
//합치기
DataTable mergeTable = new DataTable();
mergeTable = MergeTablesByIndex(dt1, dt2);
}
public static DataTable MergeTablesByIndex(DataTable dt1, DataTable dt2)
{
if (dt1 == null || dt2 == null)
throw new ArgumentNullException("t1 or t2", "Both tables must not be null");
DataTable dt3 = dt1.Clone(); // first add columns from table1
foreach (DataColumn col in dt2.Columns)
{
string newColumnName = col.ColumnName;
int colNum = 1;
while (dt3.Columns.Contains(newColumnName))
{
newColumnName = $"{col.ColumnName}_{++colNum}";
}
dt3.Columns.Add(newColumnName, col.DataType);
}
var mergedRows = dt1.AsEnumerable().Zip(dt2.AsEnumerable(),
(r1, r2) => r1.ItemArray.Concat(r2.ItemArray).ToArray());
foreach (object[] rowFields in mergedRows)
dt3.Rows.Add(rowFields);
return dt3;
}
}
}
|
cs |
실행 결과
위와 같이 dt1, dt2 과 병합이 되어 서로 같은 라인의 Row가 병합이 되어 표시되는 것을 확인하실 수 있습니다.
감사합니다.^^
728x90
'C# > C# 문법' 카테고리의 다른 글
[C# 문법] C# DataTable에 원하는 index에 컬럼 추가하는 방법 (0) | 2021.03.28 |
---|---|
[C# 문법] C# DataTable에 원하는 index에 컬럼 추가하는 방법 (0) | 2021.03.28 |
[C# 문법] C# 콘솔창 텍스트 색상(컬러) 입히는 방법 (0) | 2021.03.10 |
[C# 문법] string 배열에서 공백 문자 제거하기 (0) | 2021.03.01 |
[C# 문법] C# List에 저장된 특정 값의 인덱스 번호 가져오는 방법 (3) | 2021.03.01 |
이 글을 공유하기