#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 Я спрашиваю, есть ли способ написать интеллектуальный запрос для получения этой информации