Я хочу преобразовать массив DataRow
в DataTable
... Каков самый простой способ сделать это?Простой способ преобразования массива datarow в datatable
ответ
Почему не итерацию через массив DataRow и добавьте (используя DataRow.ImportRow, если это необходимо, чтобы получить копию DataRow), что-то вроде:
foreach (DataRow row in rowArray) {
dataTable.ImportRow(row);
}
Убедитесь, что ваш DataTable имеет той же схемы, что и DataRows в вашем массиве DataRow.
DataTable dt = new DataTable();
DataRow[] dr = (DataTable)dsData.Tables[0].Select("Some Criteria");
dt.Rows.Add(dr);
Я уже пытался, как это .. ошибка возникает что-то вроде «Входной массив длиннее количество столбцов в этой таблице. " – Nila
AS Jay указал, что ваш dataTable имеет ту же схему, что и DataRows в вашем массиве DataRow. –
Да .. Я пробовал. Я использовал Datatable1 = datatable2.Clone(); Теперь он работает ... Спасибо :-) – Nila
Для .Net Framework 3.5+
DataTable dt = new DataTable();
DataRow[] dr = dt.Select("Your string");
DataTable dt1 = dr.CopyToDataTable();
Но если нет ни одной строки в массиве, это может вызвать ошибки, такие как источник не содержит DataRows. Поэтому, если вы решите использовать этот метод CopyToDataTable()
, вы должны проверить массив, чтобы знать, что у него есть datarows или нет.
if (dr.Length > 0)
DataTable dt1 = dr.CopyToDataTable();
Ссылка доступна на MSDN: DataTableExtensions.CopyToDataTable Method (IEnumerable)
Мне это нравится. –
Откуда вы получили 'copyToDataTable()'? Я не нашел его в .net 2.0 – SMUsamaShah
.Net Framework 3.5+ –
Вот решение. Он должен работать нормально.
DataTable dt = new DataTable();
dt = dsData.Tables[0].Clone();
DataRows[] drResults = dsData.Tables[0].Select("ColName = 'criteria');
foreach(DataRow dr in drResults)
{
object[] row = dr.ItemArray;
dt.Rows.Add(row);
}
Другой способ заключается в использовании DataView
// Create a DataTable
DataTable table = new DataTable()
...
// Filter and Sort expressions
string expression = "[Birth Year] >= 1983";
string sortOrder = "[Birth Year] ASC";
// Create a DataView using the table as its source and the filter and sort expressions
DataView dv = new DataView(table, expression, sortOrder, DataViewRowState.CurrentRows);
// Convert the DataView to a DataTable
DataTable new_table = dv.ToTable("NewTableName");
DataTable dt = myDataRowCollection.CopyToDataTable<DataRow>();
DataTable dt = new DataTable();
foreach (DataRow dr in drResults)
{
dt.ImportRow(dr);
}
Простой способ:
// dtData is DataTable that contain data
DataTable dt = dtData.Select("Condition=1").CopyToDataTable();
// or existing typed DataTable dt
dt.Merge(dtData.Select("Condition=1").CopyToDataTable());
Incase кто нуждается в ней в VB.NET:
Dim dataRow as DataRow
Dim yourNewDataTable as new datatable
For Each dataRow In yourArray
yourNewDataTable.ImportRow(dataRow)
Next
.Net 3.5+ добавлен DataTableExtensions, использовать метод DataTableExtensions.CopyToDataTable
Для DataRow массива просто использовать .CopyToDataTable(), и он будет возвращать DataTable.
Для использования одного DataRow
new DataRow[] { myDataRow }.CopyToDataTable()
Вы можете использовать System.Linq так:
if (dataRows != null && dataRows.Length > 0)
{
dataTable = dataRows.AsEnumerable().CopyToDataTable();
}
DataTable dataTable = new DataTable();
dataTable = OldDataTable.Tables[0].Clone();
foreach(DataRow dr in RowData.Tables[0].Rows)
{
DataRow AddNewRow = dataTable.AddNewRow();
AddNewRow.ItemArray = dr.ItemArray;
dataTable.Rows.Add(AddNewRow);
}
Пожалуйста добавьте некоторое объяснение предоставленного вам кода –
- 1. Простой способ преобразования символьного массива в dataframe
- 2. Простой способ преобразования массива в strin
- 3. Что такое простой способ обратного преобразования массива?
- 4. Как загрузить datatable из массива datarow?
- 5. Reentering Datarow в DataTable
- 6. Datatable DataRow в Linq
- 7. Addin Datarow в Datatable
- 8. Самый эффективный способ преобразования DataTable в CSV
- 9. Удалить Datarow из Datatable
- 10. Подсчет datarow из datatable []
- 11. как преобразовать datarow в datatable
- 12. Индекс текущего DataRow в DataTable
- 13. ASP.NET Преобразование DataRow [] в DataTable
- 14. Есть ли простой способ преобразования из массива в массивList?
- 15. Простой способ преобразования массива непикселей в массив необязательных значений
- 16. Каков самый простой способ преобразования массива в вектор?
- 17. Проблема преобразования массива байтов в datatable
- 18. Самый простой способ преобразования индексов
- 19. Простой способ преобразования xmlElements XML
- 20. Как обновить DataRow ADO.NET в DataTable с помощью другого DataRow?
- 21. ADO.NET DataTable/DataRow Thread Safety
- 22. LINQ Выберите DataRow из DataTable
- 23. Каков наилучший способ преобразования datarow [] в список <int>?
- 24. DataTable DataRow DataColumn для столбцов
- 25. Значение фильтра datarow для datatable
- 26. Создание DataRow из поиска в DataTable/DataSet
- 27. Как удалить datarow из массива datarow?
- 28. копировать DataRow из одного DataTable в другой?
- 29. Сохранение массива простой способ
- 30. Добавление кнопок в DataRow в DataTable
Этот метод полезен, если вы получаете сообщение об ошибке «Недействительный источник данных используется для MyControl. Допустимый источник данных должен реализовывать IListSource или IEnumerable» при попытке привязать DataRow непосредственно к свойству DataSource элемента управления. Вот как это сделать: DataTable dataTable = new DataTable(); dataTable.ImportRow (DataRow); MyControl.DataSource = dataTable; ' – humbads
+1 Я предпочитаю это, а не' rowArray.CopyToDataTable(); 'потому что он хранит схему таблицы и не заменяет ее новым объектом таблицы! –
Очень хорошо! Но я бы предложил клонировать DataTable перед foreach. Он копирует формат DataTable: newDataTable = oldDataTable.clone(); – Whiplash