我正在尝试根据int
分数构建排行榜。我正在拉出记录并计算排名如下:
//Base query
var query = UoW.Repository<UserProfile>().Get().OrderByDescending(u => u.Points);
//Fetch the data including a groupby count
var data = await query
.Skip(skip)
.Take(pageSize)
.Select(u => new UserListItem
{
Points = u.Points.ToString(),
Username = u.DisplayName,
Rank = query.Count(o => o.Points > u.Points) + 1 //Calculates the rank (index)
})
.GroupBy(u => new { Total = query.Count() })
.FirstOrDefaultAsync();
这样可以正常工作,除非我有2个或更多具有相同点的值,它复制了位置。无论关系如何,我都需要它不断增加。这是当前显示结果的方式:
排名|用户|点
知道我怎么能让它正确地自动递增?
答案 0 :(得分:0)
解决方案是为Rank功能添加更多条件,以确定在得分相关时哪个首先出现。它甚至可以按用户名a-&gt;排名。如果你愿意,你可以。
可以在this SO answer找到答案,指出您使用多个条件的正确方向。