C#/Entity Framework Core: IQueryable получает теоретический рейтинг в запрашиваемом списке оценок без создания экземплярC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 C#/Entity Framework Core: IQueryable получает теоретический рейтинг в запрашиваемом списке оценок без создания экземпляр

Сообщение Anonymous »

tl;dr, у меня есть отсортированный IQueryable оценок пользователей, и я хочу получить рейтинг попытки (который может быть или не быть в IQueryable).
У меня есть класс Attempt, который представляет попытку моей видеоигры.

Код: Выделить всё

class Attempt(int Id, string UserId, int score)
{
public int Id { get; set; } = Id;
public string UserId { get; set; } = UserId!;
public int score { get; set; } = score;
}
Предположим, у меня есть IQueryable для имитации IQueryable Entity Framework Core в классах DbContext. Я использую PostgreSQL.

Код: Выделить всё

var list = new List();

list.Add(new Attempt(1, "Joe", 20));
list.Add(new Attempt(2, "Alan", 25));
list.Add(new Attempt(4, "Joe", 30));
list.Add(new Attempt(7, "Violet", 500));
list.Add(new Attempt(5, "Violet", 10));
list.Add(new Attempt(9, "Paul", 10));
list.Add(new Attempt(66, "Paul", 10));

var queryable = list.AsQueryable();
Я хочу получить теоретический рейтинг произвольной попытки, независимо от того, есть она в списке или нет, где «Ранг» означает позицию в списке, отсортированную по баллу.В случае наличия равенства их ранги должны соответствовать наивысшей позиции, на которую они равны.
И я хочу сделать это без преобразования IQueryable в IEnumerable, чтобы нам никогда не приходилось получать весь список попыток из БД.
Вот несколько примеров использования:

Код: Выделить всё

// attempts to check
var attempt1 = new Attempt(4, "Joe", 30); // existent attempt - should return the existing attempts rank
var attempt3 = new Attempt(58, "Joel", 47); // non-existent attempt - should get the rank right after the attempt with the lowest score higher than itself
var attempt2 = new Attempt(57, "Jonathan", 30); // non-existent attempt with colliding score - should return the same rank as any existing attempt with the same score
Как это сделать?

Подробнее здесь: https://stackoverflow.com/questions/789 ... ore-in-que
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Entity Framework Core 8: метод IQueryable «Include» не найден
    Anonymous » » в форуме C#
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Как выполнить суммирование с использованием LINQ с IQueryable в Entity Framework Core?
    Anonymous » » в форуме C#
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Как выполнить суммирование с использованием LINQ с IQueryable в Entity Framework Core?
    Anonymous » » в форуме C#
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Iqueryable.where.tolist vs iqueryable.tolist.where, какой запрос лучше с точки зрения производительности?
    Anonymous » » в форуме C#
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Iqueryable.where.tolist vs iqueryable.tolist.where, какой запрос лучше с точки зрения производительности?
    Anonymous » » в форуме C#
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»