Я пытаюсь построить таблицу лидеров на основе оценки int
. Я потянув записи, и вычисления ранга, как так:Linq to SQL duplicate rank
//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 или более значений с той же точки, что дублирует положение. Мне нужно, чтобы он постоянно увеличивался независимо от связей. Вот как отображает результаты:
Рейтинг | Пользователь | Балл
- 1 | Пользователь 1 | 456
- 2 | Пользователь 2 | 420
- 3 | Пользователь 3 | 402
- 4 | Пользователь 4 | 380
- 4 | Пользователь 5 | 380
Любая идея, как я могу получить его для автоматического приращения правильно?
О том, хочу ли я, чтобы дубликаты просто были заказаны по заказу по отображаемому имени. Любая идея получить запрос для этого? –