2017-08-11 9 views
0

linqを使用して左結合を書こうとしていますが、エラーが発生します。これは、SQLコードです:linqで左結合を使用する方法

 Select 
      Case s.StudentID 
      When 1000 Then s.Amount 
      End As Amount 
     From Student s 
     Left Join Course cOn c.Time = s.ForDate And c.StudentID= s.ID And s.Amount= 1000 

この1つは、私がコードをしようとしたが、左の参加のため、それはエラーを与える:

 from s in Student 
     join c in Course 
              on new {s.ForDate , s.ID} 
              equals new { c.Time, c.StudentID}          
              into inj 

              from i in inj.DefaultIfEmpty() 
              where s.Amount= 1000 

答えて

0

この

from s in Student 
     join c in Course on new {A=s.ForDate ,B= s.ID} 
          equals new {A= c.Time,B= c.StudentID}          
          into inj 
          from i in inj.DefaultIfEmpty() 
          where s.Amount == 1000 
          select new{ 
          /// 
          } 
+0

s.ForDateとc.Timeが同じタイプであるか、あなたはキャスト – Rise

+0

を使用する必要があることは私も試したs.Amount = 1000エラーを与えることを確認してくださいinj.Amountしかし、まだエラーを与える – phi

+0

私はwhere節で=演算子を忘れました。 – Rise

0

この

from s in Student.Where(p=>p.Amount == 1000) 
join c in Course on new {s.ForDate , s.ID} equals new { c.Time, c.StudentID} into inj from i in inj.DefaultIfEmpty() 
select new{ 
} 
を試してみてください
0

あなたのSQLは非常に独特で、それほど多くはないようです便利な、しかし翻訳です:

from s in Student 
where s.Amount == 1000 
select (s.StudentID == 1000 ? s.Amount : null) 
関連する問題