2011-07-06 6 views
0

と同等のものを策定することはできませんすべての可能なマシン上で指定した期間で動作するように計画されているすべての労働者のレコードがあります。LINQの問題が含まれています:テーブルReservationWorkerPeriodsで「WHERE IN」とクエリ

追加のテーブルWorkerOnMachineOnConstructionSiteは列workerId、MachineIdとConstructionSiteIdが含まれています。私が選択したマシン上で動作するだけの労働者を取得したいテーブルReservationWorkerPeriodsから

。これらのレコードは、アプリケーションで使用されている

var relevantWorkerOnMachineOnConstructionSite = (from cswm in currentConstructionSiteSchedule.ContrustionSiteWorkerOnMachine 
                 where cswm.MachineId == machineId 
                 select cswm).ToList(); 
     workerOnMachineOnConstructionSite = relevantWorkerOnMachineOnConstructionSite as List<ContrustionSiteWorkerOnMachine>; 

ので、私の場合も、上記のコードをバイパスする必要はありません:私は、次のコードを書かれているWorkerOnMachineOnConstructionSiteテーブルからだけで、関連するレコードを取得するために

選択されたマシンで働く労働者のためのworkerPeriodsだけを直接取得することができます。とにかく、関連するworkerIDを知ってから関連する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)); 

をが、正しくないとし、それを修正する方法がわからないようです。だれかが問題であることを知っていますか、どのようにリストからユーザーIDを含むレコードを取得することが可能ですか?

答えて

2

現在、1つのプロパティを持つ匿名オブジェクトをオンザフライで構築しています。あなたは(行方不明中括弧に注意)と直接IDを取得したいと思う:

var userIDs = from w in workerOnMachineOnConstructionSite select w.WorkerId; 

また、このような場合には、それにToListを呼び出すことはありません - 変数userIDsだけで、クエリではなく、結果が含まれています。その変数を次のクエリで使用すると、プロバイダはその変数を単一のSQLクエリに変換できます。

関連する問題