2009-05-13 1 views
30

Я хотел бы добавить один DataTable в другой DataTable. Я вижу, что класс DataTable имеет два метода; «Загрузить (IDataReader)» и «Merge (DataTable)». Из документации обе кажутся «объединить» входящие данные с существующим DataTable, если существуют строки. Я буду выполнять слияние на уровне доступа к данным.Как добавить один DataTable в другой DataTable

Я мог бы использовать IDataReader и использовать метод Load для объединения DataTables. Или я могу загрузить DataSet с помощью IDataReader, получить DataTable из DataSet, а затем использовать метод Merge для объединения DataTables.

Мне было интересно, может ли кто-нибудь сказать мне, какой именно метод использовать?

В качестве альтернативы, дайте мне знать, если у вас есть другое предложение о том, как выполнить эту задачу.

ответ

40

Merge принимает DataTable, для загрузки требуется IDataReader - поэтому в зависимости от того, к чему ваш доступ к данным имеет доступ, используйте требуемый метод. Я понимаю, что Load будет внутренне вызывать Merge, но не 100% уверен в этом.

Если у вас есть две таблицы данных, используйте Merge.

14

Вы можете позволить своим DataAdapter выполнить работу. DataAdapter.Fill(DataTable) добавит ваши новые строки в любые существующие строки в DataTable.

+2

Лучший ответ прямо здесь –

+1

Делает сложную задачу lo хорошо! – ashubuntu

35

Тип данных в том же столбце должен быть равен.

dataTable1.Merge(dataTable2); 

После этого результат:

dataTable1 = dataTable1 + dataTable2

+0

Вы экономите свое время, спасибо – destinydz

4

Добавить два набора данных, содержащих DataTables, теперь он будет сливаться в соответствии с требованиями

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]); 

Теперь DS1 будет иметь объединенные данные

+0

Не нужно много хлопотать, когда есть простые и встроенные способы выполнить ту же работу. Уже догнал огромное давление в качестве программиста :) – ashubuntu

 Смежные вопросы

  • Нет связанных вопросов^_^