我正在使用RavenDB 2.5.2879,我发现了一个问题.那是一个错误吗?
当我使用FirstOrDefault()时,查询效果很好.
session.Query<QueryModel>("App/Entities").Where(x => x.Tag == "Clients").OfType<Client>().FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
当我使用LastOrDefault()时,我得到一个异常"无法理解表达式:.Where(x =>(x.Tag =="Clients")).OfType().LastOrDefault()"
session.Query<QueryModel>("App/Entities").Where(x => x.Tag == "Clients").OfType<Client>().LastOrDefault();
Run Code Online (Sandbox Code Playgroud)
这是设计的.如果Last并且LastOrDefault得到支持,Raven将不得不迭代一个可能很大的数据集来返回单个项目.
相反,使用FirstOrDefault并提供降序排序.
session.Query<QueryModel>("App/Entities")
.Where(x => x.Tag == "Clients")
.OrderByDescending(x => x.Something)
.OfType<Client>()
.FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
还要考虑一下,如果没有某种排序顺序,即使升序排序也有些无意义.如果您需要第一个或最后一个,则应首先应用排序顺序.