Как объединить две таблицы DataSet в одну
Я пытаюсь сделать, как указано выше, расчесывая два DataSet.tables
в один стол. Мне было интересно, если это было возможно сделать. Я вызываю мою хранимую процедуру, и она возвращает мои значения, я устанавливаю их в таблицу. (Все проиллюстрировано ниже).
Пытался:
Добавление обоих имен таблиц в раздел Mapping ("Tables", IncomingProductTotals)
,
Добавление обеих таблиц в раздел Mapping ("Tables", IncomingProductTotals1)
("Tables", TotalDownTimeResults1)
Больше всего исследований я могу найти в таблицах соединения SQL.
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%28v=vs.110%29.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]);