gpt4 book ai didi

nhibernate - 使用 ICriteria 按 null/not null 排序

转载 作者:行者123 更新时间:2023-12-04 17:13:36 28 4
gpt4 key购买 nike

我想像这样对我的结果进行排序:

  • 首先,我想要列/属性 的所有行/对象不为空 , 那么所有的 colmn/property 为空 .
  • 然后我想按另一列/属性排序。

  • 如何使用 ICriteria 做到这一点?我必须创建自己的 Order 类,还是可以使用现有代码来完成?
    ICriteria criteria = Session.CreateCriteria<MyClass>()
    .AddOrder(Order.Desc("NullableProperty")) // What do I do here? IProjection? Custom Order class?
    .AddOrder(Order.Asc("OtherProperty"));

    我想要这样的订单:
    NullableProperty  OtherProperty
    ---------------- -------------
    1 2
    8 7
    5 9
    NULL 1
    NULL 3
    NULL 8

    最佳答案

    我终于有了一个可行的答案。以前我认为这是不可能的(10k 可以看到我删除的答案),但我从 SQL 查询开始:

    SELECT Id, NullableProperty, OtherProperty
    FROM NullableSorting
    ORDER BY
    (CASE WHEN NullableProperty IS NULL THEN 1 ELSE 0 END),
    OtherProperty

    然后将其转换为使用标准接口(interface)。这里使用的所有对象都是内置的。
    ICriteria criteria =
    session.CreateCriteria(typeof(NullableEntity))
    .AddOrder
    (
    Order.Asc
    (
    Projections.Conditional
    (
    Restrictions.IsNull("NullableProperty"),
    Projections.Constant(1),
    Projections.Constant(0)
    )
    )
    )
    .AddOrder(Order.Asc("OtherProperty"));

    关于nhibernate - 使用 ICriteria 按 null/not null 排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2601755/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com