2014-10-03 2 views
0

Я использую RavenDB 2.5.2879, и я заметил проблему. Это ошибка?RavenDB index query: OfType <T>() .LastOrDefault() не поддерживается

Когда я использую FirstOrDefault(), запрос работает хорошо.

session.Query<QueryModel>("App/Entities").Where(x => x.Tag == "Clients").OfType<Client>().FirstOrDefault(); 

Когда я использую LastOrDefault(), я получаю исключение «Не удалось понять выражение: .где (х => (x.Tag == "Клиенты")) OfType() LastOrDefault (..) "

session.Query<QueryModel>("App/Entities").Where(x => x.Tag == "Clients").OfType<Client>().LastOrDefault(); 

ответ

5

Это по дизайну. Если поддерживались Last и LastOrDefault, Raven должен был бы выполнить итерацию через потенциально большой набор данных, чтобы вернуть только один элемент.

Вместо этого используйте FirstOrDefault и укажите убывающий порядок сортировки.

session.Query<QueryModel>("App/Entities") 
     .Where(x => x.Tag == "Clients") 
     .OrderByDescending(x => x.Something) 
     .OfType<Client>() 
     .FirstOrDefault(); 

Рассмотрим также, что без некоторых порядок сортировки, даже при сортировке по возрастанию несколько бессмысленно. Если вам нужно сначала или последним, сначала необходимо применить порядок сортировки.