반응형
오랜만에 C#으로 찾아왔습니다.
Linq 라는 것은 데이터와 데이터를 비교하여 필요한 데이터를 다시 새롭게 재 구성하기 위해서 쓰는 것이라고 요번에 습득 하였습니다.
이번 로직을 만들면서 2가지를 다시 배웠습니다.
1. LinQ는 데이터와 데이터를 재 구성하여 필요한 데이터만 찾을 수 있다.
2. DataTable에도 타입이 존재한다.
2번 같은 경우는 select를 다시 할 때 무척이나 애 먹었습니다..
실제 오라클 테이블에 Number로 정의가 되어있어서 데이터테이블로 데이터를 가져왔을때 컬럼 타입이 Int32로 구성되어있어서 그 부분을 확인 하지 못해 엄청난 삽질을 하였습니다.
아래는 제가 Linq를 사용하여 데이터를 구성한 로직입니다.
감사합니다.
//APIdt , Resultdt는 데이터 테이블 형식 입니다.
var query = (from APIData in APIdt.AsEnumerable()
join dbData in Resultdt.AsEnumerable()
on new
{
//비교할 이름을 같게 해주어야 합니다. TEST1 , TEST2
TEST1 = APIData.Field<string>("TEST1"),
TEST2 = APIData.Field<string>("TEST2")
}
equals new
{
//비교할 이름을 같게 해주어야 합니다. TEST1 , TEST2
TEST1 = dbData.Field<string>("TEST1"),
TEST2 = dbData.Field<string>("TEST2")
}
select new
{
//Field 형식이 굉장히 중요하기 떄문에 데이터테이블의 타입이 어떤것인지 꼭 확인이 필요합니다.
//Test1 , Test2 , Test3 , Test4는 변수입니다.
Test1 = APIData.Field<string>("REQ_SVC"),
Test2 = dbData.Field<int>("FCL_CNT"),
Test3 = dbData.Field<int>("LCL_CNT"),
Test4 = dbData.Field<int>("CONSOL_CNT")
});
//데이터테이블을 생성 해 줍니다.
DataTable Final_DT = new DataTable();
Final_DT.Columns.Add("Test1");
Final_DT.Columns.Add("Test2");
Final_DT.Columns.Add("Test3");
Final_DT.Columns.Add("Test4");
//구성된 데이터를 다시 데이터테이블로 만들어줍니다.
foreach (var item in query)
{
DataRow Final_Dr = Final_DT.NewRow();
Final_Dr["Test1"] = item.Test1;
Final_Dr["Test2"] = item.Test2;
Final_Dr["Test3"] = item.Test3;
Final_Dr["Test4"] = item.Test4;
Final_DT.Rows.Add(Final_Dr);
}
완성된 데이터 테이블
Final_DT
'IT > C#' 카테고리의 다른 글
[C#] SMTP 465 PORT 메일 보내기 (0) | 2022.08.19 |
---|---|
[C#] File Return 매개변수 Content Type의 대하여 (0) | 2022.07.25 |
[C#]Dictionary , DataTable 데이터 Null 체크 로직 (0) | 2021.04.22 |
[C#]ExcelPackage를 이용한 Excel 만들기 (Dataset) (0) | 2021.03.15 |
[C#]Session Null 값 체크 (0) | 2021.01.21 |