【发布时间】:2021-06-05 07:37:58
【问题描述】:
我很难获得用户在列表中的排名。
我的列表如下所示:
| User | Score |
|---|---|
| 1 | 10 |
| 2 | 10 |
| 1 | 5 |
| 3 | 5 |
| 2 | 40 |
| 1 | 10 |
我尝试获取用户 3 的排名。
为此,我使用按用户 ID 分组的第一个 linq 请求。
然后我请求将分数(nbpoints)和 orderby 像这样降序求和:
用户 2 获得 50 分 用户 1 有 25 分 用户 3 获得 5 分
那么如何获取用户的排名呢?我用 select 尝试了索引,但它在排序之前使用了索引。
我的要求如下:
MyScoreRankObject = users.Select((u, index) =>
{
return new StatResultDto
{
ActualScore = u.Sum(s => s.NbPoints),
Index = u.Index
};
}).OrderByDescending(s => s.ActualScore).Where(u => u.Id ==3).FirstOrDefault();
我怎样才能获得排名?
我试图得到:
对用户 3 的请求给了我对象:
new StatResultDto
{
ActualScore = u.Sum(s => s.NbPoints),
Index = u.Index // Gives the ranking
};
谢谢,
【问题讨论】: