質問

私は、LINQの構文にSQLを変換する難しさを抱えています。

私は区分で互いに文献2つの表(カテゴリとCategoryListing)を有します。私はすべてのカテゴリテーブルの区分とCategoryListingテーブル内の対応するすべての試合のための区分のカウントのリストを取得する必要があります。区分はCategoryListing中に存在しない場合、区分がまだ返却しなければならない - 。しかし、0の周波数を持つ

次のSQLクエリは、期待される結果を示しています:

SELECT c.CategoryID, COALESCE(cl.frequency, 0) as frequency
FROM Category c
LEFT JOIN (
    SELECT cl.CategoryID, COUNT(cl.CategoryID) as frequency 
    FROM CategoryListing cl
    GROUP BY cl.CategoryID
) as cl
ON c.CategoryID = cl.CategoryID
WHERE c.GuideID = 1
役に立ちましたか?

解決

はテストされていませんが、これはトリックを行う必要があります:

var q = from c in ctx.Category
        join clg in 
            (
                from cl in ctx.CategoryListing
                group cl by cl.CategoryID into g
                select new { CategoryID = g.Key, Frequency = g.Count()}
            ) on c.CategoryID equals clg.CategoryID into cclg
        from v in cclg.DefaultIfEmpty()
        where c.GuideID==1
        select new { c.CategoryID, Frequency = v.Frequency ?? 0 };

他のヒント

私は先に行って、データベースのストアドプロシージャにクエリ全体を動かします。これは、最初の場所でLINQを回避することで問題を解決します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top