Приветствую!
У меня есть отсортированный список лонгов List numbers.
Так же у меня есть таблица в бд Records (id, name, desc).
Я хочу составить объект запроса IQueryable к этой таблице.
Но мне нужно что бы список записей/сущностей из таблицы в рамках запроса был отсортирован, сортировка в оперативной памяти не подходит.
Сортировка должна происходить по полю Records.id на основе порядка лонгов в списке numbers.
На просторах сети был найдет вот такой метод, который вроде бы эту задачу решает.
public IQueryable<Entity> Sort(IQueryable<Entity> query, List<int> ids)
{
var count = ids.Count;
for (int i = 0; i < count; ++i)
{
int value = ids[i];
if (query is IOrderedQueryable<Entity> orderedQuery)
{
query = orderedQuery.ThenBy(d => d.Id == value);
}
else
{
query = query.OrderBy(d => d.Id == value);
}
}
return query;
}
Но в момент его вызова, на этапе query = orderedQuery.ThenBy(d => d.Id == value) вылетает исключение:
Expression of type..IQueryable cannot be used for parameter of type IOrderedQueryable..
Непонятно, вроде бы запрос приводится к IOrderedQueryable, но при этом падает в исключение..
Прошу помочь разобраться.