Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > Сравнение данных в DataSet


Автор: deinlandel 20.6.2008, 08:37
В двух объектах типа DataSet лежат данные в таблицах (рез-ты вып-я запросов). Надо проверить, одни и те же это данные. Есть ли эффективный способ (без перебора в цикле строк таблиц) сравнения? Хотя бы двух таблиц между собой? 

(пишется некая система тестирования SQL-запросов на корректность - нужные ли данные он возвращает.  эталонные данные для сравнения должны быть в XML... у ДатаСетов с этим просто, потому выбрал их)

Автор: jonie 20.6.2008, 10:22
лучшее имхо решение это всеже сравнение средставами sql server
Код

select * 
 into #OopsTable
 from @tab1 t1
 left join @tab2 t2 on t1.field1=t2.fielld1 AND t1.field2=t2.field2 AND ....
 AND t2.somefield IS NULL
select * from #oopsTable  --result set


но можно сравнить и средставами датасетов... циклами (так решал Гамильтон в сборнике рецептов ADO.NET)
возможно серелизовать данные в XML и мутить с ним...
также стоит посмотреть на метод merge для DataTable

Автор: deinlandel 24.6.2008, 09:26
Увы, на этапе написания проги ни число, ни названия, ни типы колонок мне неизвестны... так что метод с SQL не подойдет

Автор: Twwi 25.6.2008, 14:39
если интересует только битовый ответ, а не в чем конкретно разница, можно использовать метод Merge() датасета или таблицы. он объединяет данные исключая совпадения. Т.Е. можно посмотреть количество записей в одной таблице, объединить ее со сравниваемой и если число записей не иззмениться, считать что они одинаковы.
Смотрите в параметры мерджа.
Есть еще метод Equals(), но в работе с данными я не видела примеров.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)