1

持っているクエリとサブクエリを含むエンティティクエリにlinqを書き込むにはどうすればよいですか?例えば:

SELECT * 
FROM   dbo.Gavahi g 
WHERE  g.id  NOT IN (
    SELECT    GavahiID
    FROM      dbo.AsnadMaliDetail  ad 
    GROUP BY  GavahiID 
    HAVING SUM (MablaghMoredEstefade) >= (
        SELECT mablagh
        FROM   dbo.Gavahi g 
        WHERE  g.id = ad.GavahiID
    )
)
4

1 に答える 1

0

コメントで指摘されているように、SQL で考えてから適切な翻訳を見つけようとするのではなく、LINQ を使用してセットを操作する方法を調査することをお勧めします。Microsoft は LINQ メソッドに SQL 風の名前を使用しようとしましたが、実際にはそれほど似ていません。

次の LINQ クエリは、GavahiId が Gavahi.Id の外部キーであると仮定して、SQL で表現していることを実行します。

var mablaghs = AsnadMaliDetails
        .GroupBy(x => x.Gavahi)
        .Where(g => g.Sum(y => y.MablaghMoredEstefade) < g.Key.Mablagh)
        .Select(x => x.Key);

MablaghMoredEstefade の SUM の条件を反転すると、別の場所GroupByで主キーを操作する代わりに、キー (Gavahi) を直接選択できることに注意してくださいNOT IN

LINQ は初めてで、SQL に精通している場合は、生成された SQL を一目で確認できるLINQPadを試すことをお勧めします。ただし、無料版にはオートコンプリートは含まれていません。

于 2013-01-08T17:27:22.163 に答える