Dans la table ReservationWorkerPeriods, il existe des enregistrements de tous les travailleurs qui sont planifiés pour travailler sur une période donnée sur n'importe quelle machine.Linq Contient problème: impossible de formuler l'équivalent de la requête 'WHERE IN'
La table supplémentaire WorkerOnMachineOnConstructionSite contient les colonnes workerId, MachineId et ConstructionSiteId.
Depuis la table ReservationWorkerPeriods Je souhaite récupérer uniquement les travailleurs qui travaillent sur la machine sélectionnée.
Pour récupérer uniquement les documents pertinents de la table WorkerOnMachineOnConstructionSite j'ai écrit le code suivant:
var relevantWorkerOnMachineOnConstructionSite = (from cswm in currentConstructionSiteSchedule.ContrustionSiteWorkerOnMachine
where cswm.MachineId == machineId
select cswm).ToList();
workerOnMachineOnConstructionSite = relevantWorkerOnMachineOnConstructionSite as List<ContrustionSiteWorkerOnMachine>;
Ces documents sont également utilisés dans l'application, donc je ne veux pas contourner le code ci-dessus, même si est possible de récupérer directement juste workerPeriods pour les travailleurs qui travaillent sur la machine sélectionnée. Quoi qu'il en soit, je n'ai pas compris comment il est possible de récupérer les workersPeriod pertinents une fois que nous savons quels userIDs sont pertinents.
J'ai essayé le code suivant:
var userIDs = from w in workerOnMachineOnConstructionSite select new {w.WorkerId};
List<ReservationWorkerPeriods> workerPeriods = currentConstructionSiteSchedule.ReservationWorkerPeriods.ToList();
allocatedWorkers = workerPeriods.Where(wp => userIDs.Contains(wp.WorkerId));
mais il semble être incorrect et ne savent pas comment y remédier. Est-ce que quelqu'un sait quel est le problème et comment il est possible de récupérer seulement les enregistrements qui contiennent des ID utilisateur de la liste?