【问题标题】:NHibernate Criteria API - order by max of two propertiesNHibernate Criteria API - 按最多两个属性排序
【发布时间】:2010-10-11 09:35:58
【问题描述】:

我有一个 PrivateMessage 类,我想使用 Criteria API 获取按时间顺序按时间排序的用户 PM 列表,或者按 CreationDateLastAnswerDate(取决于哪个更近)。

如何在 Criteria API 中按这两个属性的最大值排序?我的代码如下所示:

var dc = DetachedCriteria.For<PrivateMessage>();
...
dc.AddOrder(new Order("???");
return (IList<PrivateMessage>)FindAll(typeof(PrivateMessage), dc);

CreationDateDateTimeLastAnswerDateDateTime?

谢谢!

【问题讨论】:

    标签: nhibernate sql-order-by nhibernate-criteria


    【解决方案1】:
    Order.Desc(
        Projections.Conditional(
            Restrictions.GtProperty("CreationDate", "LastAnswerDate"),
            Projections.Property("CreationDate"),
            Projections.Property("LastAnswerDate"))))
    

    【讨论】:

    • 谢谢:)。我通过合并解决了这个问题,因为一个属性可以为空,但您的解决方案将始终有效。
    猜你喜欢
    • 2020-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-25
    • 2018-03-15
    • 2011-11-24
    • 2014-02-28
    相关资源
    最近更新 更多