我正在使用RavenDB 2.5.2879,我发现了一个问题。这是一个错误吗?
当我使用FirstOrDefault()时,查询效果很好。
session.Query<QueryModel>("App/Entities").Where(x => x.Tag == "Clients").OfType<Client>().FirstOrDefault();
当我使用LastOrDefault()时,我得到一个异常“无法理解表达式:.Where(x =&gt;(x.Tag ==”Clients“))。OfType()。LastOrDefault()”< / p>
session.Query<QueryModel>("App/Entities").Where(x => x.Tag == "Clients").OfType<Client>().LastOrDefault();
答案 0 :(得分:5)
这是设计的。如果支持Last
和LastOrDefault
,则Raven必须遍历可能较大的数据集才能返回单个项目。
相反,请使用FirstOrDefault
并提供降序排序。
session.Query<QueryModel>("App/Entities")
.Where(x => x.Tag == "Clients")
.OrderByDescending(x => x.Something)
.OfType<Client>()
.FirstOrDefault();
另外考虑一下,如果没有一些排序顺序,即使是升序排序也没有什么意义。如果您需要第一个或最后一个,则应首先应用排序顺序。