【发布时间】:2012-12-03 23:13:56
【问题描述】:
主要目标是根据受欢迎程度(根据有多少人最喜欢的特定成分表示)返回按排序顺序排列的成分列表。 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;
【问题讨论】:
-
那段代码还有什么问题?
-
还是不行,不是按照每种成分的使用人数排序
-
如果无法访问您遇到问题的数据库,我将很难提供帮助(也许其他人可以在没有它的情况下编写 LINQ,但不是我)。有没有办法可以将问题隔离为我们可以在任何系统上运行的东西?
-
数据只是来自两个表。 1 表称为 PersonalInfo 带有 ff 字段:字符串 Firstname、字符串 Lastname、datetime Birthdate、int ID、字符串电子邮件、成分最喜欢的成分。最喜欢的成分是类型成分的复杂数据类型。成分对应于 OTHER 表:成分 w/ ff 字段:字符串名称和 int ID
标签: c# sql linq entity-framework join