別のテーブルの上位 5 つの値に基づいてデータベースからテーブルを選択しようとしていますが、障害が発生しました。
上位 5 つの値を除いたバージョンは次のとおりです。
from d in Deals
from f in FacebookUserCategories
from s in SubCategories
where s.FacebookCategoryId == f.FacebookCategoryId
&& f.FacebookUserId == 1437585390
orderby f.Count descending
select d
ただし、SubCategories テーブルの上位 5 つの ID に基づいて取引を選択する必要があるため、Take オペレーターを使用する必要があります。
以下のlinqは、これを達成するのに役立ちます:
(from f in FacebookUserCategories
from s in SubCategories
where s.FacebookCategoryId == f.FacebookCategoryId
orderby f.Count descending
select s.Id).Take(5)
ここから結合として SubCategoryId を持つ取引テーブルを選択する方法はありますか?
要約すると...私はSQLを書くことができました..それは次のようになります:
SELECT t1.* FROM Deal t1
INNER JOIN (
SELECT TOP 5 t2.Id FROM FacebookUserCategory , SubCategory t2
WHERE FacebookUserId = '1437585390'
AND FacebookUserCategory.FacebookCategoryId = t2.FacebookCategoryId
ORDER BY Count DESC) tbl
ON t1.SubCategoryId = tbl.Id