두 행의 DataTable DT1과 DT2가 있다고 가정 해 보겠습니다. COL1, Col2의, 및 열 3DataTable in C#
및
DT2 2 열 갖는다 :
DT1 3 열이 콜라 COLB한다.
Col1, Col2, Col3, ColA 및 ColB를 얻으려면이 두 DataTable을 수평으로 결합 할 수 있습니까?
두 행의 DataTable DT1과 DT2가 있다고 가정 해 보겠습니다. COL1, Col2의, 및 열 3DataTable in C#
및
DT2 2 열 갖는다 :
DT1 3 열이 콜라 COLB한다.
Col1, Col2, Col3, ColA 및 ColB를 얻으려면이 두 DataTable을 수평으로 결합 할 수 있습니까?
나는 당신이 다음을 수행 할 수 있습니다에 당신이 결합 할 수있는 새로운 열을 추가해야하고 두 번째 테이블 또는
DataTable dt1 = new DataTable();
dt1.Columns.Add("col1", typeof(string));
dt1.Columns.Add("col2", typeof(string));
dt1.Columns.Add("col3", typeof(string));
DataTable dt2 = new DataTable();
dt2.Columns.Add("cola", typeof(string));
dt2.Columns.Add("colb", typeof(string));
object[] row = {'1', '2', '3'};
dt1.Rows.Add(row);
object[] row1 = { 'a', 'b' };
dt2.Rows.Add(row1);
// Create columns in dt1
dt1.Columns.Add("cola", typeof(string));
dt1.Columns.Add("colb", typeof(string));
// Copy data from dt2
dt1.Rows[0]["cola"] = dt2.Rows[0]["cola"];
dt1.Rows[0]["colb"] = dt2.Rows[0]["colb"];
AFAIK 아니요, DataSet
및 DataTable
은 자동 조인을 지원하지 않습니다. 새 열을 테이블에 추가하고 다른 테이블에서 열 값을 복사하여 조인을 수동으로 수행해야합니다.
그래서 당신이 단순히 컬렉션을 원하는 기존 테이블 중 하나에 데이터를 복사 얇은 :
var results = from rs1 in table1.Rows.Cast<DataRow>()
join rs2 in table2.Rows.Cast<DataRow>() on rs1.Field<int>("col1") equals rs2.Field<int>("colA")
select new { col1 = rs1.Field<int>("col1"), col2 = rs1.Field<string>("col3"), col3 = rs1.Field<string>("col3"), colA = rs1.Field<int>("colA"), colB = rs1.Field<string>("colB") };
당신은 얻을 것 DataTable
하지만 select 문에 정의 된 익명 형식 개체의 IEnumerable<T>
모음. Obvoiusly 나는 조인 기준과 열의 데이터 유형을 추측하여 실제 데이터에 대해 적절하게 지정해야합니다.
좋은 답변이지만 질문에 설명 된 두 테이블에 공통 키가 없다고 생각합니다. 다른 말로하면, 그는 잠재적으로 다른 유형의 데이터를 견인하기를 요구하고 있다고 생각합니다. 따라서 table1의 Col1은 int 일 수 있지만 Table2의 ColA는'varchar '일 수 있습니다. –
Jason이 맞습니다. 그들은 공통 키가 없으며 숫자의 무리를 가지고 있습니다. – Rabin
여러 개의 from을 사용하고 where 절에 조건을 넣어 원하는 linq에 조인을 지정할 수 있습니다. 외래 키 유형 관계가있는 경우이 옵션은 가장 간단한 옵션입니다. 각 테이블의 행을 연관시키는 방법을 지정할 수 있다면 relevent join을 사용하여 내 대답을 업데이트 할 수 있습니다. –
* join *이라고 말하면 무엇을 의미합니까? 하나 또는 두 개의 행이 필요하십니까? – Kobi
나는 그것들을 한 줄에 넣고 싶다. – Rabin