Я просмотрел много ресурсов онлайн, но думаю, что это что-то не возможно, или я подхожу к этому с неправильной точки зрения.
Я создаю список идентификаторов из дочерней таблицы и определяю, является ли чужойКлючевой идентификатор в родительской таблице содержится в списке дочерних идентификаторов. например, j =>! ids.Contains (j.InvestorId). Приведенный ниже код не будет компилироваться, так как whereFilter не может принимать параметр, но вы можете увидеть эффект, который я хотел бы.
Надеемся, что есть способ вместо получения идентификаторов заранее и передачи дополнительного параметра в whereFilter.
public List<int> ValidateReferentialIntegrity<TChild, TParent>(string childFilePath,
string parentFilePath,
Func<TParent, int, bool> whereFilter,
Func<TParent, int> selector)
{
var childList = ReadCsvFile<TChild>(typeof(TChild).Name, childFilePath);
var parentList = ReadCsvFile<TParent>(typeof(TParent).Name, parentFilePath);
var ids = childList.Select(s => (int)s.GetId()).ToList();
var unidentifiableIds = parentList.Where(whereFilter(ids))
.Select(selector).ToList();
return unidentifiableIds;
}