2016-10-24 4 views
-2

次のようなSQLクエリですが、LinQにしようとしていますが、SQLは動作していませんがlinqは動作していません...どこにエラーがありますか?linqは選択されたサブクエリーを持つテーブルを結合しますか?

select (select X from X where X.yid=Y.id and X.FormNo=4),* 
from Y 
where Y.servicetype=3 

このSQLクエリは次のように

public IEnumerable<NBelge> BelgeleriGetir2(int servicetype, int formno) 
{ 
    var db = new SERVISBAKIMEntities(); 
    var result = (from g in db.Y 
        join d in db.X 
        on g.id equals d.yid into ps 
        from d in ps.DefaultIfEmpty() 
        where g.servicetype == servicetype && d.FormNo == formno 
        select new {}); 
} 

LINQコードを働いているが、それは動作していませんか?本当のところはどこですか?

+0

あなたはSQLクエリと作業LINQクエリを示しているが、どこ非稼働LINQクエリはありますか? –

+0

最初のコードブロックがSQLクエリを実行していて、2番目のコードブロックが動作していないlinqステートメント、ありがとう – enginel

+0

"機能していません"とはどういう意味ですか?エラーが発生していますか?エラーは何ですか?予期しない結果が出ていますか?あなたが得ている結果は何ですか?あなたが期待している結果とどのように違うのですか? – itsme86

答えて

0

最も直接的、サブクエリを使用して、このです:

var result = (from y in db.Y 
       where y.servicetype == 3 
       select new { y, x = (from x in db.X 
            where x.yid == y.id && x.FormNo == 4 
            select x.x).FirstOrDefault() } 
      ).ToList(); 

しかし、私はjoinの使用がより読みやすいと思います。

select X.x, Y.* 
from Y 
join X on Y.id == X.yid 
where Y.servicetype == 3 
and X.FormNo == 4 

使用してLINQ:SQLで、それは次のようになりますので、

var result = (from y in db.Y 
       where y.servicetype == 3 
       join x in db.X on y.id equals x.yid 
       where x.FormNo == 4 
       select new { y, x }).ToList(); 
+0

サブクエリで 'select x'を意味しませんでしたか? – NetMage

+0

@NetMage - 元のSQLでは、彼はテーブルxからフィールドxを選択します: 'XをXから選択する 'ので、最初のlinqのためにそのまま使用します –

+0

はい、' select xx'を 'select x ' – NetMage

関連する問題