我将 NHibernate 与 Lambda 扩展一起使用。我想知道如何使用子字符串嵌套 Max 函数。
以下语句检索 Max("invoice_id")
var ret = session
.CreateCriteria<Invoice>()
.SetProjection(Projections.Max("invoice_id"))
.UniqueResult();
但在我的例子中,字段 invoice_id 是这样制作的:12345.10,其中 12345 是发票编号,10 指的是当年(2010 年)。而且每年发票号都从1重新开始。 所以我只需要计算前 5 位数字的 Max 函数。我该怎么做?
最佳答案
您可以像这样使用特定于服务器的函数,例如 SUBSTRING(或 DBMS 中的等效函数):
var ret = session
.CreateCriteria<Invoice>()
.SetProjection(
Projections.Max(
new SqlFunctionProjection("SUBSTRING",
NHibernateUtil.String,
Projections.Property("invoice_id"),
Projections.Constant(1),
Projections.Constant(5))))
.UniqueResult();
关于c# - 如何使用 Lambda 扩展渲染 Max(Substring),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2925518/