在表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));
,但它似乎是不正確的,不知道如何解決它。有誰知道什麼是問題,以及如何從列表中檢索包含用戶標識的記錄?