5

如何通过字符串属性的长度限制查询?例如。就像是:

NHSession.QueryOver<Customer>()
    .Where(p => p.RegistryCode.Length == 8)
4

2 回答 2

5

这样的事情可能会奏效

NHSession.QueryOver<Customer>()
    .Where(
        Restrictions.Eq(
            Projections.SqlFunction("length", NHibernateUtil.String, 
                Projections.Property<Customer>(x => x.RegistryCode)),
            8
        )
    )
于 2013-08-28T12:50:42.027 回答
1

我应该使用这种“NHibernateUtil.Int16”类型而不是“NHibernateUtil.String”,因为“长度”参数应该始终是数字而不是字符串。

像这样的东西:

NHSession.QueryOver<Customer>()
    .Where(
        Restrictions.Eq(
            Projections.SqlFunction("length", NHibernateUtil.Int16, 
                Projections.Property<Customer>(x => x.RegistryCode)),
            8
        )
    )
于 2017-06-21T10:22:34.027 回答