Создание отношений, безусловно, не пустая трата времени.
Всякий раз, когда вы оцениваете два возможных решения проблемы, вы всегда должны сравнивать стоимость / время каждого варианта. Оттуда вы обычно можете позвонить, какой выбор лучше. Следует иметь в виду, что существует DataRelation для оптимизации этих типов поиска.
Если DataRelation добавляется в существующую таблицу, для добавления отношения требуется приблизительно 125 мс (создайте требуемый хэш для сопоставления родительских / дочерних строк с помощью Datakeys).
Для поиска КАЖДОЙ родительской строки для каждой из 10000 дочерних строк с использованием DataRelation требуется всего 70 мс, в то время как для использования только описанного выше подхода Linq требуется более 4 минут.
Когда вы думаете об этом, это имеет смысл, так как первый будет перебирать 10000 дочерних строк и использовать сопоставленные Datakeys DataRelation для поиска родительской строки (не нужно перебирать все 100000 родителей). Однако второе решение должно пройти через каждую дочернюю строку (10 000) и выполнить поиск по 100 000 родительских строк, чтобы найти подходящее соответствие (10 000 x 100 000 = 1 000 000 000).