2014-01-19 2 views
1

저는 join을 생성 한 2 개의 datatables를 가지고 있습니다. 그런 다음이 데이터를 새 데이터 테이블에 복사 할 수 있습니다. 이것은 문제가없이 잘 작동합니다. 그러나 더 많은 수의 열 (예 : 다양한 데이터 유형이있는 30 개의 데이터 테이블)이있는 데이터 테이블이있는 경우 SQL 쿼리와 비슷한 각 열을 지정하지 않고도이를 모두 새로운 데이터 테이블에 어떻게 복사 할 수 있습니까? 감사합니다. .대형 데이터 테이블에 대한 Linq 쿼리

var results = from table1 in dt.AsEnumerable() 
join table2 in names.AsEnumerable() 
on table1.Field<int>("Id") equals table2.Field<int>("Id") 
select new 
{ 
    C1 = table1.Field<int>("Id"), 
    C2 = table1.Field<int>("Col1"), 
    C3 = table1.Field<int>("Col2"), 
    C4 = table2.Field<String>("Name") 
}; 

DataTable sout = dt.Clone(); 

sout.Columns.Add("Name", typeof(string)); 

foreach (var v in results) 
{ 
    sout.Rows.Add(v.C1,v.C2,v.C3,v.C4); 
}; 
+0

결과로 생성되는 'DataRow'를 지정해야합니다! –

답변

0

테이블의 기본 키를 먼저 설정하십시오.

dt.PrimaryKey = new[] {dt.Columns["Id"]}; 
names.PrimaryKey = new[] { names.Columns["Id"] }; 

그런 다음, 당신은 당신이 clone DT 마음과 같은 행동을 할 경우

dt.Merge(names,false, MissingSchemaAction.AddWithKey); 

, 당신은 코드 테이블을 병합 할 수 있습니다 변경 dt 마음을하지 않는 경우.

관련 문제