(연관된 글이 1개 있습니다.)
2 개의 DataTable 이 있습니다.
이를 Linq 를 이용해 Join 하고 조인한 두 테이블 컬럼 전체를 가져오고 싶은데
방법이 있을까요???
A 테이블과 B 테이블의 컬럼은 동적입니다. 기본키만 같고 그외 컬럼은 어떤 컬럼이 들어올지 알수 없구요
결과를 가지고 foreach 문을 이용해 다시 Datatahle 에 넣는 방법 말고
linq 결과를 가지고 바로 DataTable 로 변환이 가능한지 알고 싶습니다.
select 할때 컬럼을 지정하면 CopyToDataTable() 이 가능하긴 한데 컬럼을 알수없어 전체를 가지고 올때
가능한지 알고 싶습니다.
제가 찾은 바로는
1. DataTable 에 foreach 문을 이용해 넣기
DataTable dtResult = new DataTable();
dtResult.Columns.Add() //A,B DataTable 의 컬럼 Add...
var joinResult = from DA in A.AsEnumerable()
join DB in B.AsEnumerable()
on new {colA = A.Field<string>("PK1"), colB = A.Field<string>("PK2")}
equals new {colA = B.Field<string>("PK1"), colB = B.Field<string>("PK2")}
select new { JoinRow = DA.ItemArray.Concat(DB.ItemArray) };
joinResult.ToList().ForEach(c=>dtResult.Rows.Add(c.JoinRow));
2. var joinResult = from DA in A.AsEnumerable()
join DB in B.AsEnumerable()
on new {colA = A.Field<string>("PK1"), colB = A.Field<string>("PK2")}
equals new {colA = B.Field<string>("PK1"), colB = B.Field<string>("PK2")}
into allColumns
from result in allclumns
select rewult
DataTable dt = joinResult.CopyToDataTable();
==> 이렇게 하면 B 테이블 컬럼데이터만 나오네요 ㅜㅠ
3. linq 사용하지 않고 DataRelation 이용
[연관 글]
[최초 등록일: ]
[최종 수정일: 2/19/2016]