Microsoft MVP성태의 닷넷 이야기
2개의 DataTable Join 결과 전체 컬럼을 DataTable 로 리턴하기 [링크 복사], [링크+제목 복사],
조회: 25398
글쓴 사람
강준
홈페이지
첨부 파일
 
(연관된 글이 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]


비밀번호

댓글 작성자
 



2016-02-19 05시12분
정성태
2016-02-19 05시23분
[강준] 답변 주신건 컬럼을 알고 있을때입니다. Datatable 에 Join 조건인 Key 만 알고 있고 그외 어떤 컬럼이 있는지 모를때
A 테이블의 전체 B 테이블의 전체를 가지고 오고 싶은거구요^^
A 테이블의 전체와 B 테이블의 전체를 C 라고 받고 싶은거예요
쿼리문으로 하면
Select A.*, B.* From A JOin B ON A.PK1=B.PK1 AND A.OK2=B.PK2
[guest]
2016-02-19 05시24분
[강준] 불가능한거면 어쩔수 없구요^^; 당연히 될줄 알고 접근했는데 잘 안되서 ㅎㅎ;;
[guest]
2016-02-19 06시13분
잘 조합해 보시면 답이 나옵니다. ^^
정성태
2016-02-19 03시56분
Linq는 결국 메서드 호출!
; http://www.sysnet.pe.kr/2/0/10900
정성태

... 61  62  63  64  65  66  67  68  69  70  71  [72]  73  74  75  ...
NoWriterDateCnt.TitleFile(s)
756손승휘3/24/200818738Microsoft Web Browser OCX 부분이 안전하지 않는 ACTIVEX로 IE에서 인식되어는 점 [1]
754단테3/19/200815882실행파일의 아이콘을 프로그램 적으로 변경할 수 있을까요? [1]
753신동열3/12/200816608비스타의 권한 상승 관련 질문 있습니다. [2]
751김재영3/6/200815729스레드와 비스레드간의 대기상태 순서에 대해 질문이 있습니다. [2]파일 다운로드1
752정성태3/7/200815319    답변글 [답변]: 스레드와 비스레드 간의 대기 상태 순서에 대해 질문이 있습니다. [1]
750김용현3/3/200814664스마트 클라이언트로 파일 다운로드시 파일의 크기가 0인 경우가 발생합니다. [2]
749임영한2/28/2008302132003서버에서 msxml3.dll 오류 "80070005" 문제입니다. [2]
748류재상2/27/200819279Remoting , Tcp Channel 사용시.. 외부에서 접근 보안문제... [3]
747한귀순2/20/200817650WinForm - DataGridView 소계 등 [3]
746박상영2/20/200815577리모팅 관련해서 [3]파일 다운로드1
745조승현2/20/200816268Response.Charset ANSI로 설정..하는부분이 어려워서요.. [1]
744오야2/5/200814892멤버십, 웹파트등의 생성테이블과 업무테이블간의 관계를 어떻게.. [2]
743김기룡1/29/200816722동일 이미지 판단 방법 관련 [2]파일 다운로드1
740경혜원1/28/200818136C#에서 이런게 가능 할런지요?
742정성태1/29/200816183    답변글 [답변]: C#에서 이런게 가능 할런지요? [1]
738임경훈1/25/200817026웹서비스에서 오라클DB에 연결할 때
741임경훈1/28/200816569    답변글 [답변]: 웹서비스에서 오라클DB에 연결할 때 [1]
737단테1/25/200817983안녕하세요 정성태님. C Run-time Library의 배포에 대해서 질문있습니다. [3]
736김현기1/24/200815702XML 접두어 포함한 XmlElement 작성법? [1]
735정명원1/9/200815520ActiveX 사용시 ... [2]
734제영한12/17/200715519웹서비스에서 사용자 정의 예외 사용하기 [2]
732김기룡12/3/200718569WebRequest 요청시 일본어 인코딩 관련 문의파일 다운로드1
733김기룡12/3/200714661    답변글 일어가 깨졌네요..테스트 문자 추가합니다.^^;;파일 다운로드1
739adnim1/27/200816119    답변글 [답변]: WebRequest 요청시 일본어 인코딩 관련 문의 [1]
731우기11/27/200713327[질문] clickonce 배포시 .net framework 2.0, 3.0 설치 시간 줄일 수 있는 묘수없을까요?? [1]
730김재영11/10/200714150스레드에 사용되는 함수에 값을 같이 넘기는 방법이 있습니까?? [2]파일 다운로드1
... 61  62  63  64  65  66  67  68  69  70  71  [72]  73  74  75  ...