Why is Trim() failing in this expression?

Dav*_*Dev 2 c# nhibernate trim

我有以下方法:

        var catIds = DetachedCriteria.For<Category>()
            .Add<Category>(c => c.TypeCode == "IMA")
            .SetProjection(LambdaProjection.Property<Category>(s => s.Id));
Run Code Online (Sandbox Code Playgroud)

这没有返回任何内容,因为在数据库中该字段是nchar(10).我想要Trim()TypeCode值,如下所示:

        var catIds = DetachedCriteria.For<Category>()
            .Add<Category>(c => c.TypeCode.Trim() == "IMA")
            .SetProjection(LambdaProjection.Property<Category>(s => s.Id));
Run Code Online (Sandbox Code Playgroud)

但它返回NHibernate错误:

Unrecognised method call in epression c.TypeCode.Trim()
Run Code Online (Sandbox Code Playgroud)

办公室里的其中一个人认为这是因为HHibernate不知道如何转换.Trim()为SQL(或者那些沿着这些方向的东西).任何人都可以建议我如何解决这个问题?

vel*_*koz 5

尝试右键填充您要与所需长度进行比较的值,例如:

string cmpValue = "IMA".PadRight(10);

var catIds = DetachedCriteria.For<Category>()
        .Add<Category>(c => c.TypeCode == cmpValue)
        .SetProjection(LambdaProjection.Property<Category>(s => s.Id));
Run Code Online (Sandbox Code Playgroud)