我目前有两个表: Users 表和 Votes 表。投票表存储包含用户ID的记录。
举个简单的例子,假设我的Users表包含以下字段:
UserId, Name, Age, Gender
我的投票表有:
UserId, DateCreated
我想要做的是选择投票率最高的前10位用户。
我该怎么做?
由于
答案 0 :(得分:6)
Context.Users.OrderByDescending(x => x.Votes.Count()).Take(10)
答案 1 :(得分:2)
假设您在表之间设置了导航属性,则可以执行以下操作:
var results = db.Users.OrderByDescending(u => u.Votes.Count()).Take(10);
这将找到票数最多的前10位用户。
答案 2 :(得分:2)
如果您没有映射外键/属性:
var query = (from u in db.Users
join v in (
from v in db.Votes
group v by v.UserId into grp
select new {
UserId = grp.Key,
Count = grp.Count()
}) on u.Id equals v.UserId into l_vset
from l_v in l_vset.DefaultIfEmpty()
orderby l_v == null ? 0 : l_v.Count descending
select new {
User = u,
Votes = l_v == null ? 0 : l_v.Count
}).Take(10);