在表ReservationWorkerPeriods中,有计划在任何可能机器的给定时间段内工作的所有员工的记录。Linq包含问题:无法制定'WHERE IN'查询的等效查询
附加表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。
我曾尝试下面的代码:
var userIDs = from w in workerOnMachineOnConstructionSite select new {w.WorkerId};
List<ReservationWorkerPeriods> workerPeriods = currentConstructionSiteSchedule.ReservationWorkerPeriods.ToList();
allocatedWorkers = workerPeriods.Where(wp => userIDs.Contains(wp.WorkerId));
,但它似乎是不正确的,不知道如何解决它。有谁知道什么是问题,以及如何从列表中检索包含用户标识的记录?