Entity Linq находит индекс перед выполнением запроса

#c# #linq #entity

#c# #linq #сущность

Вопрос:

У меня есть следующий запрос:

 var result = //some Entity framework IOrderedQueryable;
var fullList = await result.ToListAsync();
var currentIndex = fullList.FindIndex(x => x.Id== model.Id);
var nextRecord = fullList[currentIndex   1];
  

Этот код работает и делает то, что мне нужно.

Проблема в том, что если полный список состоит из тысяч записей, мне приходится извлекать все это в память, чтобы найти тот элемент, который я ищу.

Есть ли более эффективный способ добиться этого?

В качестве примечания, к запрашиваемому объекту применяются некоторые динамические предложения where, поэтому это должно быть сделано так, а не, например, запись в SQL

Комментарии:

1. Создайте словарь : Dictionary<string, int> dict = fullList.Select((x,i) => new { id = x.Id , index = i}) . GroupBy(x => x.Id , y => y.индекс) . ToDictionary(x => x.Key, y => y.FirstOrDefault());

2. Алекс, ты спрашиваешь, возможно ли проверить данные без данных?

3. @uTeisT Прошу прощения за мое замешательство, но я не могу понять, саркастичны вы или нет?

4. @uTeisT Я спрашиваю, есть ли способ написать интеллектуальный запрос для получения этой информации