主な目的は、人気度に従って並べ替えられた順序で成分のリストを返すことです (これは、特定の成分をお気に入りとして持っている人の数によって示されます)。同等の SQL は次のとおりです。
select distinct COUNT(PersonalInfoes.FavoriteIngredient_ID) as NoUsing,
Ingredients.Name
from PersonalInfoes right join Ingredients
on PersonalInfoes.FavoriteIngredient_ID = Ingredients.ID
group by Ingredients.Name
order by NoUsing desc
上記と同じ結果を生成するメソッド構文の同等の SQL クエリは何ですか? 私が持っている最も近いものはこれです:
from i in db.Ingredients
join p in db.PersonalInfos on i.ID equals p.FavoriteIngredient.ID into ing
from p in ing.DefaultIfEmpty()
group i by i.Name into g
from p in g
orderby g.Count() descending
select new { Name = g.Key, Count = g.Count() }.Name;