В таблице ReservationWorkerPeriods есть записи всех работников, которые планируют работать в определенный период на любой возможной машине.
Дополнительная таблица WorkerOnMachineOnConstructionSite содержит столбцы workerId, MachineId и ConstructionSiteId.
Из таблицы ReservationWorkerPeriods я хотел бы получить только работников, которые работают на выбранной машине.
Чтобы извлечь только соответствующие записи из таблицы WorkerOnMachineOnConstructionSite, я написал следующий код:
var relevantWorkerOnMachineOnConstructionSite = (from cswm in currentConstructionSiteSchedule.ContrustionSiteWorkerOnMachine
where cswm.MachineId == machineId
select cswm).ToList();
workerOnMachineOnConstructionSite = relevantWorkerOnMachineOnConstructionSite as List<ContrustionSiteWorkerOnMachine>;
Эти записи также используются в приложении, поэтому я не хочу обходить вышеуказанный код, даже если возможно напрямую получить только workerPeriods для работников, которые работают на выбранной машине. Во всяком случае, я не выяснил, как можно получить соответствующие значения workerPeriods, когда мы узнаем, какие идентификаторы user релевантны.
Я попробовал следующий код:
var userIDs = from w in workerOnMachineOnConstructionSite select new {w.WorkerId};
List<ReservationWorkerPeriods> workerPeriods = currentConstructionSiteSchedule.ReservationWorkerPeriods.ToList();
allocatedWorkers = workerPeriods.Where(wp => userIDs.Contains(wp.WorkerId));
но он кажется неправильным и не знает, как это исправить. Кто-нибудь знает, в чем проблема и как можно получить из списка только записи, содержащие идентификаторы пользователей?