0

私は以下のSQL-Selectを持っています:

select * from tlieferschein l 
inner join tbestellung b on l.kbestellung = b.kbestellung 
inner join tkunde k on b.tkunde_kkunde = k.kkunde 
where b.nStorno = 0 
and (select count(*) from tlieferscheinpos x inner join tbestellpos y on x.kbestellpos = y.kbestellpos and x.klieferschein = l.klieferschein) > 0 
and b.cBestellNr = '718' 
order by l.derstellt desc

ここで、この sql-select を linq に変換する必要があります。私は休養を試みましたが、うまくいきません:

var result = from l in context.tLieferschein
   join b in context.tbestellung on l.kBestellung equals b.kBestellung
   join k in context.tkunde on b.tKunde_kKunde equals k.kKunde
   where b.nStorno == 0 && (from x in context.tLieferscheinPos join y in context.tbestellpos on x.kBestellPos equals y.kBestellPos && x.kLieferschein equals l.kLieferschein ).Count() > 0
   orderby l.dErstellt descending
   select new {l, b, k};

私が間違っていること、誰かが私を助けてくれることを願っています。

これは初めてです。Entity Framework の Linq-Query を作成しようとしています。

4

1 に答える 1

0

@Thomas where ステートメントに別の制約を追加するのを逃したことを除いて、すべてが式で問題ありb.cBestellNr = '718'ません。これを式に追加して、もう一度確認してください。

参考までに、式全体は次のようになります。

var result = from l in context.tLieferschein
   join b in context.tbestellung on l.kBestellung equals b.kBestellung
   join k in context.tkunde on b.tKunde_kKunde equals k.kKunde
   where b.nStorno == 0 && (from x in context.tLieferscheinPos join y in context.tbestellpos on x.kBestellPos equals y.kBestellPos && x.kLieferschein equals l.kLieferschein select new {x, y}).Count() > 0
   && b.cBestellNr == 718
   orderby l.dErstellt descending
   select new {l, b, k};

サブクエリは次のようにする必要があると思います:

(from x in context.tLieferscheinPos join y in context.tbestellpos 
 on x.kBestellPos.GetValueOrDefault(0) equals Convert.ToInt32(y.kBestellPos) && x.kLieferschein equals l.kLieferschein
 select new {x, y}).Count() > 0

これが役立つことを願っています!!

于 2013-08-20T13:00:47.890 に答える