Надеюсь, кто-нибудь может мне помочь, потому что я немного застрял.
Я создаю сервис перед базой данных его игры.
База данных имеет следующие две таблицы:
CREATE TABLE [dbo].[PB_HiscoreEntry] (
[Id] UNIQUEIDENTIFIER NOT NULL,
[PlayerId] UNIQUEIDENTIFIER NOT NULL,
[Score] INT NOT NULL,
[DateCreated] DATETIME NOT NULL
);
CREATE TABLE [dbo].[PB_Player] (
[Id] UNIQUEIDENTIFIER NOT NULL,
[UniquePlayerId] NCHAR (32) NOT NULL,
[Name] NVARCHAR (50) NOT NULL,
[DateCreated] DATETIME NOT NULL
);
Идея, конечно, состоит в том, чтобы каждый игрок только один раз попадал в базу данных и позволил им иметь несколько записей о его истории. В этой таблице PB_HiscoreEntry будет много баллов, но, выполнив простое убывание OrderBy, я могу создать реальный список историй, в котором тот, у кого самый высокий балл, находится сверху, а самый низкий - снизу.
Моя проблема здесь в том, что моя база данных не имеет никакого представления о фактическом рейтинге по сравнению с другими. Это то, что я должен сделать, выполнив запрос OrderBy, описанный выше.
Вот код, который поможет проиллюстрировать то, что я хочу заархивировать:
var q = (
from he in entities.PB_HiscoreEntry
orderby he.Score descending
select new HiscoreItem()
{
UserId = he.PB_Player.UniquePlayerId,
Username = he.PB_Player.Name,
Score = he.Score,
//Put in the rank, relative to the other entires here
Rank = 1
});
HiscoreItem, это просто мой собственный DTO, который мне нужно отправить по телеграфу.
Значит, у кого-нибудь есть представление о том, как я могу это сделать, или я здесь на совершенно неверном пути?