2014-04-23 5 views
1

두 개의 DataSet.tables을 하나의 테이블에 빗 으면서 위에서 언급 한대로 시도하고 있습니다. 그렇게 할 수 있는지 궁금 해서요. 내 저장 프로 시저를 호출하고 테이블에 설정 한 값을 반환합니다. (아래 그림 참조).두 개의 데이터 세트 테이블을 하나로 결합하는 방법

는 시도 :

가 매핑 섹션 ("Tables", IncomingProductTotals) 모두 테이블 이름을 추가. 내가 찾을 수있는 대부분의 SQL 테이블 조인에 연구를 많이 수행 매핑 섹션 ("Tables", IncomingProductTotals1)("Tables", TotalDownTimeResults1)

하나 개의 테이블로 모두를 추가

.

SqlCommand cmd = new SqlCommand("L_GetTimeTotals", conn); 
cmd.Parameters.Add("@startTime", SqlDbType.DateTime, 30).Value = RadDateTimePicker2.SelectedDate; 
cmd.Parameters.Add("@endTime", SqlDbType.DateTime, 30).Value = RadDateTimePicker3.SelectedDate; 
cmd.CommandType = CommandType.StoredProcedure; 

SqlDataAdapter da = new SqlDataAdapter(cmd); 

var ds = new DataSet(); 

ds.Tables.Add("IncomingProductTotals"); 
ds.Tables.Add("IncomingProductTotalsA"); 
ds.Tables.Add("IncomingProductTotalsB"); 
ds.Tables.Add("IncomingProductTotals1"); 
ds.Tables.Add("IncomingProductTotalsA1"); 
ds.Tables.Add("IncomingProductTotalsB1"); 

da.TableMappings.Add("Table", "IncomingProductTotals"); 
da.TableMappings.Add("Table1", "IncomingProductTotalsA"); 
da.TableMappings.Add("Table2", "IncomingProductTotalsB"); 
da.TableMappings.Add("Table3", "IncomingProductTotals1"); 
da.TableMappings.Add("Table4", "IncomingProductTotalsA1"); 
da.TableMappings.Add("Table5", "IncomingProductTotalsB1"); 

da.Fill(ds); 

ds.Tables.Remove("IncomingProductTotalsA"); 
ds.Tables.Remove("IncomingProductTotalsB"); 
ds.Tables.Remove("IncomingProductTotalsA1"); 
ds.Tables.Remove("IncomingProductTotalsB1"); 

ExcelHelper.ToExcel(ds, "TimeTotals.xls", Page.Response); 

답변

1

병합 방법을 사용해 보셨습니까? http://msdn.microsoft.com/en-us/library/system.data.datatable.merge(v=vs.110).aspx

foreach(var t in ds.Tables.Skip(1)) 
{ 
    t.Merge(ds.Tables[0]); 
} 

편집 : 건너 뛰기 Linq에 있습니다. 당신도 이것을 사용할 수 있습니다 :

for(int i = 1; i < ds.Tables.Count - 1; i++) 
    ds.Tables[i].Merge(ds.Tables[0]); 
+0

죄송합니다. –

+0

Doe snot에는 "skip"에 대한 정의가 포함되어 있습니다. –

+0

Skip은 System.Linq의 확장 메서드입니다. –

관련 문제