RavenDB索引查询:OfType <t>()。不支持LastOrDefault()</t>

时间:2014-10-03 03:21:13

标签: indexing ravendb

我正在使用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();

1 个答案:

答案 0 :(得分:5)

这是设计的。如果支持LastLastOrDefault,则Raven必须遍历可能较大的数据集才能返回单个项目。

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

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

另外考虑一下,如果没有一些排序顺序,即使是升序排序也没有什么意义。如果您需要第一个或最后一个,则应首先应用排序顺序。