|
|
|
Supreme 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?
Спасибо! Евгений Боуден
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
| Лучше всего написать запрос который сразу вернет в DataSet данные без повторений. Здесь может помочь DISTINCT запрос или GROUP BY.
|
|
|
|
|
Supreme Being
      
участник
Last Login: 19.10.2008 12:14
Сообщ.: 693,
Visits: 7 081
|
|
bazile (16.04.2007) Лучше всего написать запрос который сразу вернет в DataSet данные без повторений. Здесь может помочь DISTINCT запрос или GROUP BY.Не годится. Программа несколько раз обращается с разными параметрами к базе данных и собирает в DataSet (DataTable) все, что нашла. При этом возможны повторы. И только теперь, когда программа отработала, есть необходимость почистить дубликаты.
Спасибо! Евгений Боуден
|
|
|
|
|
Forum 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.
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
| Есть ли возможность объединить эти действия в хранимую процедуру? Тогда она сможет отфильтровать повторы, а запрос надо будет делать всего один. Кроме того SELECT-ы возможны и на стороне клиента. У DataTable есть метод Select можно попробовать его.
|
|
|
|
|
Supreme Being
      
участник
Last Login: 19.10.2008 12:14
Сообщ.: 693,
Visits: 7 081
|
|
bazile (16.04.2007)
Есть ли возможность объединить эти действия в хранимую процедуру? Тогда она сможет отфильтровать повторы, а запрос надо будет делать всего один. Кроме того SELECT-ы возможны и на стороне клиента. У DataTable есть метод Select можно попробовать его. Второе попробую. По поводу первого - это невозможно, поскольку идет обращение к разным таблицам и Views с разным набором параметров в зависимости от ситуации. Distinct тоже применить нельзя, поскольку суммарно по всем полям у меня нет повторяющихся строк, а сделать Distinct по нескольким выборочным полям, насколько я знаю, невозможно.
Спасибо! Евгений Боуден
|
|
|
|
|
Supreme 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.Я сделал так. Все прекрасно работает!!!
Спасибо! Евгений Боуден
|
|
|
|