Откуда поступают данные в виде сетки? То, что вы должны делать, это SQL-соединение. Если это невозможно, например, данные gridview взяты из совершенно другого источника, было бы намного быстрее выполнить один цикл перемежения для набора результатов SQL. Это предполагает, что существует множество различных значений, которые необходимо сопоставить, и нецелесообразно создавать SQL-выбор из данных в вашем сеточном представлении, который бы выполнял работу напрямую.
1) Создать SqlDataReader
из базы данных, упорядоченной по manufacturername
, modelName
, serialNo
2) Заказать сетку так же
3) Начиная с первой записи каждого в цикле, сравнивайте текущие значения в виде сетки с текущими значениями из считывателя данных. Если они меньше (до) текущих данных в считывателе данных, переместите указатель вида сетки вперед. Если они больше чем, переместите указатель чтения данных вперед. Если они равны, выполните необходимое действие и (если хотите продолжать движение) переместите указатель вида сетки вперед. Продолжайте, пока не дойдете до конца вида сетки, и последняя запись в считывателе данных будет больше, чем последняя запись в виде сетки.
Максимальное число итераций равно максимальному из двух наборов и одному запросу к базе данных.