RavenDB v4 官方文档建议使用IRavenQueryable<T>.Select()
方法在结果集中获取自定义字段。它甚至适用于计算字段,例如
session.Query<Order>()
.Select(x => new { Total = x.Lines.Sum(l => l.PricePerUnit * l.Quantity) })
问题:IDocumentQuery<T>
当使用or IAsyncDocumentQuery<T>
instance 而不是时,有没有办法在结果集中拥有计算字段(如上)IRavenQueryable<T>
?
文档说请求被Query
转换成IDocumentQuery<T>
幕后。但是,缩小输出字段集的最接近的方法是SelectFields<T>()
,它没有在结果集中包含计算字段的选项。
PS文档说那Query
总是被翻译成DocumentQuery
对象。但是,我在代码中找不到它是如何实现的(尽管我猜它是通过IQueryable.Expression完成的)。也许RQL是现在要走的路……