2009-05-13 241 views
30

Me gustaría adjuntar un DataTable a otro DataTable. Veo que la clase DataTable tiene dos métodos; "Load (IDataReader)" y "Merge (DataTable)". De la documentación, ambos parecen 'fusionar' los datos entrantes con el DataTable existente si existen filas. Haré la fusión en una capa de acceso a datos.Cómo agregar un DataTable a otro DataTable

Podría usar un IDataReader y usar el método Load para combinar DataTables. O podría cargar un DataSet usando el IDataReader, obtener el DataTable del DataSet y luego usar el método Merge para fusionar los DataTables.

Me preguntaba si alguien podría decirme cuál es el método adecuado para usar?

Como alternativa, avíseme si tiene una sugerencia diferente sobre cómo llevar a cabo esta tarea.

Respuesta

40

Merge toma una DataTable, Load requiere un IDataReader, por lo tanto, dependiendo de a qué le dé acceso su capa de datos, use el método requerido. Tengo entendido que Load llamará internamente a Merge, pero no está 100% seguro de eso.

Si tiene dos DataTables, use Merge.

14

Puede dejar que su DataAdapter haga el trabajo. DataAdapter.Fill(DataTable) agregará sus nuevas filas a cualquier fila existente en DataTable.

+2

La mejor respuesta aquí –

+1

Hace una tarea difícil lo ok fácil! – ashubuntu

35

El tipo de datos en el mismo nombre de columnas debe ser igual.

dataTable1.Merge(dataTable2); 

Después de que el resultado es:

DataTable1 = DataTable1 + dataTable2

+0

me ahorras mi tiempo, gracias – destinydz

4

Añadir dos conjuntos de datos que contienen tablas de datos, ahora se fusionarán según sea necesario

DataSet ds1 = new DataSet(); 
DataSet ds2 = new DataSet(); 

DataTable dt1 = new DataTable(); 
dt1.Columns.Add(new DataColumn("Column1", typeof(System.String))); 

DataRow newSelRow1 = dt1.NewRow(); 
newSelRow1["Column1"] = "Select"; 
dt1.Rows.Add(newSelRow1); 

DataTable dt2 = new DataTable(); 
dt2.Columns.Add(new DataColumn("Column1", typeof(System.String))); 

DataRow newSelRow2 = dt1.NewRow(); 
newSelRow2["Column1"] = "DataRow1Data"; // Data 
dt2.Rows.Add(newSelRow2); 

ds1.Tables.Add(dt1); 
ds2.Tables.Add(dt2); 

ds1.Tables[0].Merge(ds2.Tables[0]); 

Ahora DS1 tendrá la datos fusionados

+0

No hay necesidad de esforzarse cuando hay formas fáciles e integradas para hacer exactamente el mismo trabajo. Ya atrapado con una tremenda presión como programador :) – ashubuntu