Как создать объект DataRow как копию существующей DataRow
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Как создать объект DataRow как копию... Expand / Collapse
Автор
Сообщение
14.04.2007 14:50
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 19.10.2008 12:14
Сообщ.: 693, Visits: 7 081
Задача такова.

Есть две идентичные DataTable.

В одной одной из них dtOriginal есть набор DataRow-s, а вторая dtCopy пустая.

Причем строки в первой из них могут быть задвоенные или даже затроенные или зачетверенные. Мне нужно избавиться от задвоенных строк.

 Я пытаюсь решить проблему так.

В цикле перебираю записи в dtOriginal. Внутри цикла организовываю цикл по записям dtCopy. Если такой записи не найдено - я переписываю Row из dtOriginal в dtCopy:

dtCopy.Rows.Add(dtOriginal.rows(i))

Но получаю ошибку.

Вопроса два.

1) Как переписать строку из одной таблицы в другую?

2) А может вообще организовать весь процесс по другому? Может быть существует другой вариант, как избавиться от задвоенных строк в dtOriginal?

Спасибо!
Евгений Боуден

Сообщ. #912459
16.04.2007 10:05
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
Лучше всего написать запрос который сразу вернет в DataSet данные без повторений. Здесь может помочь DISTINCT запрос или GROUP BY.
Сообщ. #912472
16.04.2007 16:55
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 19.10.2008 12:14
Сообщ.: 693, Visits: 7 081
bazile (16.04.2007)
Лучше всего написать запрос который сразу вернет в DataSet данные без повторений. Здесь может помочь DISTINCT запрос или GROUP BY.

Не годится.

Программа несколько раз обращается с разными параметрами к базе данных и собирает в DataSet (DataTable) все, что нашла. При этом возможны повторы. И только теперь, когда программа отработала, есть необходимость почистить дубликаты.

Спасибо!
Евгений Боуден

Сообщ. #912492
16.04.2007 17:23
Forum Member

Forum MemberForum MemberForum MemberForum MemberForum MemberForum MemberForum MemberForum Member

участник
Last Login: 27.02.2008 16:42
Сообщ.: 43, Visits: 1 569
1. Пoпрoбуйте тaк:
dtCopy.Rows.Add(dtOriginal.rows(i).ItemArray);
2. В вaшей ситуaции - не дoбaвлятъ пoвтoряющиеся стрoки, т.е делaтъ прoверку дo мoментa дoбaвления стрoки в dtOriginal.
Сообщ. #912493
16.04.2007 17:24
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
Есть ли возможность объединить эти действия в хранимую процедуру? Тогда она сможет отфильтровать повторы, а запрос надо будет делать всего один.

Кроме того SELECT-ы возможны и на стороне клиента. У DataTable есть метод Select можно попробовать его.

Сообщ. #912494
16.04.2007 18:40
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 19.10.2008 12:14
Сообщ.: 693, Visits: 7 081
bazile (16.04.2007)
Есть ли возможность объединить эти действия в хранимую процедуру? Тогда она сможет отфильтровать повторы, а запрос надо будет делать всего один.

Кроме того SELECT-ы возможны и на стороне клиента. У DataTable есть метод Select можно попробовать его.

Второе попробую.

По поводу первого - это невозможно, поскольку идет обращение  к разным таблицам и Views с разным набором параметров в зависимости от ситуации. Distinct тоже применить нельзя, поскольку суммарно по всем полям у меня нет повторяющихся строк, а сделать Distinct по нескольким выборочным полям, насколько я знаю, невозможно.

Спасибо!
Евгений Боуден

Сообщ. #912501
21.04.2007 14:02
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 19.10.2008 12:14
Сообщ.: 693, Visits: 7 081
MFisher (16.04.2007)
1. Пoпрoбуйте тaк:
dtCopy.Rows.Add(dtOriginal.rows(i).ItemArray);
2. В вaшей ситуaции - не дoбaвлятъ пoвтoряющиеся стрoки, т.е делaтъ прoверку дo мoментa дoбaвления стрoки в dtOriginal.

Я сделал так. Все прекрасно работает!!!

Спасибо!
Евгений Боуден

Сообщ. #912679
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl, Alexey Spirin

Время GMT +3:00, Сейчас 12:52