8

我想要提出的是这样表达的东西:

var result = Session.QueryOver<Foo>().OrderBy(f => f.UpdatedAt ?? f.CreatedAt);

果然,这行不通。T-SQL 中的大致等价物是

... order by coalesce(f.UpdatedAt, f.CreatedAt)

在 NHibernate QueryOver 中进行“合并”的犹太洁食方式是什么?

4

2 回答 2

9
.OrderBy(Projections.SqlFunction("coalesce",
                                 NHibernateUtil.DateTime,
                                 Projections.Property<Foo>(x => x.UpdatedAt),
                                 Projections.Property<Foo>(x => x.CreatedAt)))
于 2011-04-27T16:59:38.887 回答
1

迭戈的答案是我想出的办法,但对我来说似乎太冗长了,所以我问了一个问题,得到了一个很好的答案。基本上,您可以注册自己的扩展程序,然后执行

.OrderBy(f => f.UpdatedAt.IfNull(f.CreatedAt));

IfNull你的新扩展在哪里。我什至已经向 NH Jira 提交了改进建议,但还没有得到回应。

于 2016-08-05T04:16:25.570 回答