У меня есть два DataTables
: dtChild и dtMaster. Найти совпадение определенных столбцов из первого DataTable во втором
Для каждой строки в dtChild, я хотел бы видеть, если есть совпадение в dtMaster. И это сопоставление основано на конкретных столбцах.
Таким образом, в изображении выше, как DataTables
есть столбцы с именами Col2 и COL3. И это интересующие нас столбцы. Во второй строке мы имеем совпадение. Потому что есть строка в dtMaster со значением Col2 равного Value22 и значением Col3 равного Value23.
Я хочу написать запрос LINQ, который возвращает null
для первого результата строки (так как нет матча для первого буксире в dtChild) и для второй строки возвращает идентификатор найденной записи в dtMaster (предположим, что dtMaster также имеет столбец первичного ключа с именем Id в этом случае).
N.B. Имена столбцов могут меняться каждый раз, когда мы запускаем программу. Поэтому мы хотим, чтобы наша LINQ была динамичной. Также количество совпадающих столбцов (2 в приведенном выше примере) может варьироваться. Таким образом, может быть случай, когда наше условие основывается на значении 5 столбцов.
Что делать, если имеется несколько совпадений? Вы хотите, чтобы id (я предполагаю 'Col1') только первого совпадения? –
В вашей логике есть что-то очень неправильное: «Для каждой строки в dtChild я хотел бы видеть, есть ли совпадение в dtMaster». Точка отношения «хозяин/ребенок» заключается в том, что строка в главном всегда существует, когда ребенок может существовать или не существовать, а не наоборот –
@TimSchmelter Хороший вопрос. Мы только заботимся о первом матче. Мы хотим, чтобы совпадение возвращалось к значению столбца с именем 'Id', который будет фиксированным, в отличие от других. – Disasterkid