左とLINQのは、カウントを含むサブクエリに参加します
質問
私は、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を回避することで問題を解決します。
所属していません StackOverflow