13

SO や他のサイトでさまざまな質問を見てきましたが、これLINQ でa を実行するための正しい構文のようですが、機能していません。JOIN

var stages = (from stage in entityManager.TPM_TASKSTAGE select stage);
var results = (from task in pv.TPM_TASK
               join st in stages on st.STAGEID equals task.STAGEID
               where task.TASKTYPE == "Solution"
               select new SolutionTask());

ここでは、関心のあるものを実際に選択していないという事実を無視しますが、 のst.NAME各行のプロパティにアクセスしたいと考えていますTPM_TASK。2 つのテーブルは によってリンクされていSTAGEIDます。コンパイラ エラーが発生します。

「st」という名前は、「equals」の左側のスコープにはありません。「等しい」の両側の式を交換することを検討してください。

LINQ 結合式では、 と の両方sttask赤い波線があります。ばかげたことをしていると言ってください。

4

1 に答える 1

18

外側のシーケンスからのキー セレクターが最初に実行されます。あなたの場合の外側のシーケンスはpv.TPM_TASK. だから、あなたは参加するべきですtask.STAGEID equals st.STAGEID

var stages = (from stage in entityManager.TPM_TASKSTAGE select stage);
var results = (from task in pv.TPM_TASK
               join st in stages on task.STAGEID equals st.STAGEID // here
               where task.TASKTYPE == "Solution"
               select new SolutionTask());
于 2013-04-08T21:39:26.267 に答える