NHibernate Linq 中前 5 个元素的总和



我想在linq to NHibernate查询中接收前5个元素的属性总和。如果我使用以下代码:

Session.Query<Document>().Take(5).Sum(x => x.Value)

我收到"方法不受支持"异常。

有什么想法吗?

NHibernate 3.3.1.4000

你可以使用这个:

Session.Query<Document>().Select(x => x.Value).Take(5).Sum();

NHibernate仅支持没有表达式参数的Sum重载。

由于未知原因,您必须首先Select,然后按照您正确评论的方式Take

问题是 nhibernate linq 提供程序尚未完全实现。尝试使用内存.ToArray()实现,然后使用 linq 到内存计算.Sum()

例如:

Session.Query<Document>().Select(x => x.Value).Take(5).ToArray().Sum()

PS:同样的问题可能发生在.Skip()和加入DefaultIfEmpty()

NHibernate.4.0.2.4000 与 lambda 的 Sum 也Session.Query<Document>().Take(5).Sum(x => x.Value) .

如果可能不返回任何行,并且 Value 不是可为空的类型,则需要将其转换为可为空的类型,因为当不存在任何项目时,总和将返回 null:

Session.Query<Document>().Take(5).Sum(x => (decimal?)x.Value) ?? 0;

相关内容

  • 没有找到相关文章

最新更新