Копирование данных из одной DataTable в другую

Каков самый быстрый способ передачи нескольких тысяч строк данных из одной таблицы данных в другую? Было бы здорово увидеть несколько примеров фрагментов кода.

Редактировать: мне нужно объяснить немного больше. Существует условие фильтрации для копирования строк. Таким образом, простой Copy() не будет работать.


person Alex    schedule 15.09.2008    source источник
comment
Вам нужно скопировать только определенные строки или всю таблицу данных?   -  person Sean Hanley    schedule 16.09.2008
comment
Только определенные строки. Обновил и пост.   -  person Alex    schedule 16.09.2008
comment
Можете ли вы фильтровать с помощью DataView.Filter, а затем DataTable.Copy?   -  person GEOCHET    schedule 16.09.2008
comment
Сработало бы. но условие фильтрации не так просто. Он может меняться в зависимости от некоторых значений.   -  person Alex    schedule 16.09.2008
comment
Вы на 100% уверены, что было бы проще уточнить исходный SQL-запрос?   -  person GEOCHET    schedule 16.09.2008
comment
SQL-запрос находится вне моего контроля :(. Это самая большая проблема, с которой я столкнулся.   -  person Alex    schedule 16.09.2008
comment
Структура DataTable источника жалкая. Мне нужно изменить это, чтобы сделать его презентабельным для пользовательского интерфейса.   -  person Alex    schedule 16.09.2008
comment
Это появилось в моем поиске Google как 7-й результат!!! Ужас, StackOverFlow... Работает!!!   -  person Brian G    schedule 16.09.2008


Ответы (3)


Вы не можете скопировать всю таблицу, вам нужно скопировать одну строку. С http://support.microsoft.com/kb/308909 (пример кода, если вы следуете ссылка на сайт)

«Как копировать строки данных между таблицами данных. Прежде чем использовать метод ImportRow, необходимо убедиться, что целевая таблица имеет ту же структуру, что и исходная таблица. В этом примере используется метод Clone класса DataTable для копирования структуры таблицы DataTable, включая все таблицы DataTable. схемы, отношения и ограничения.

В этом образце используется таблица Products, включенная в базу данных Microsoft SQL Server Northwind. Первые пять строк копируются из таблицы "Продукты" в другую таблицу, созданную в памяти".

person Eugene Katz    schedule 15.09.2008
comment
Это не совсем клон. Я думаю, что ручная итерация по таблице данных - единственный вариант. - person Alex; 16.09.2008

Что не так с DataTable.Copy?

person GEOCHET    schedule 15.09.2008
comment
Мне нужно объяснить немного больше. Существует условие фильтрации для копирования строк. Таким образом, простой Copy() не будет работать. - person Alex; 16.09.2008

Копирование строк в таблицу бросает мне несколько флагов. Я видел, как люди пробовали это раньше, и в каждом отдельном случае они действительно хотели получить System.Data.DataView. Вам действительно следует проверить, работает ли RowFilter свойство будет делать то, что вам нужно.

person Alex Lyman    schedule 15.09.2008