Indexing RavenDB索引查询:类型为<;T>;()。不支持LastOrDefault()

Indexing RavenDB索引查询:类型为<;T>;()。不支持LastOrDefault(),indexing,ravendb,Indexing,Ravendb,我正在使用RavenDB 2.5.2879,我注意到了一个问题。那是虫子吗 当我使用FirstOrDefault()时,查询运行良好 session.Query<QueryModel>("App/Entities").Where(x => x.Tag == "Clients").OfType<Client>().FirstOrDefault(); session.Query(“App/Entities”)。其中(x=>x.Tag==“Clients”)。of ty

我正在使用RavenDB 2.5.2879,我注意到了一个问题。那是虫子吗

当我使用FirstOrDefault()时,查询运行良好

session.Query<QueryModel>("App/Entities").Where(x => x.Tag == "Clients").OfType<Client>().FirstOrDefault();
session.Query(“App/Entities”)。其中(x=>x.Tag==“Clients”)。of type().FirstOrDefault();
使用LastOrDefault()时,出现异常“无法理解表达式:。其中(x=>(x.Tag==“Clients”))。类型为().LastOrDefault()

session.Query(“应用程序/实体”)。其中(x=>x.Tag==“客户端”)。of type().LastOrDefault();

这是出于设计。如果支持
Last
LastOrDefault
,Raven将不得不迭代一个可能很大的数据集,只返回一个项目

相反,请使用
FirstOrDefault
并提供降序排序顺序

session.Query<QueryModel>("App/Entities")
       .Where(x => x.Tag == "Clients")
       .OrderByDescending(x => x.Something)
       .OfType<Client>()
       .FirstOrDefault();
session.Query(“应用程序/实体”)
.Where(x=>x.Tag==“客户端”)
.OrderByDescending(x=>x.Something)
第()类
.FirstOrDefault();

还需要考虑的是,如果没有某种排序顺序,即使是升序排序也有点毫无意义。如果您需要first或last,您应该首先应用排序顺序。

这是设计的。如果支持
Last
LastOrDefault
,Raven将不得不迭代一个可能很大的数据集,只返回一个项目

相反,请使用
FirstOrDefault
并提供降序排序顺序

session.Query<QueryModel>("App/Entities")
       .Where(x => x.Tag == "Clients")
       .OrderByDescending(x => x.Something)
       .OfType<Client>()
       .FirstOrDefault();
session.Query(“应用程序/实体”)
.Where(x=>x.Tag==“客户端”)
.OrderByDescending(x=>x.Something)
第()类
.FirstOrDefault();
还需要考虑的是,如果没有某种排序顺序,即使是升序排序也有点毫无意义。如果需要“第一个”或“最后一个”,应首先应用排序顺序