Linq to SQL重复排名
问题描述:
我试图根据int
得分建立排行榜。我拉出来的记录和计算,像这样的排名:Linq to SQL重复排名
//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个或多个值具有相同点复制它的位置。无论关系如何,我都需要它不断增加。这是目前如何显示结果:
排名|用户| Points
- 1 |用户1 | 456
- 2 |用户2 | 420
- 3 |用户3 | 402
- 4 |用户4 | 380
- 4 |用户5 | 380
任何想法如何让它自动增加正确?
答
解决的办法是给Rank函数添加更多的条件,以确定哪些分数是绑定的第一个。如果你喜欢,它甚至可以通过用户名a-> z进行排名。
答案指向你在正确的方向使用多个标准可以在this SO answer找到。
如果我希望重复只是按显示名称排序,那么怎么办?任何想法让查询来做到这一点? –