一尘不染

linq to nhibernate compareto不支持

sql

我已经linq到nhibernate查询:

var listka = 
    from i in FakturyZakupu.Queryable 
    where String.Compare(i.REJESTRY.REJ_KOD,sbWartoscBetween1.ToString()) >= 0 
    && String.Compare(i.REJESTRY.REJ_KOD,sbWartoscBetween2.ToString()) <= 0 
    select i;

lista = listka.ToList();

而且它的编译效果很好,但是如果我使用它,则会抛出异常:

NotSupportedException int32 CompareTo(System.String,System.String)

如何在两个值之间使用linq查询字符串值。像在SQL中一样:从ID在a和b之间的表中选择*。


阅读 106

收藏
2021-03-10

共1个答案

一尘不染

NHibernate的Linq提供程序是非常可扩展的。您可以扩展它以允许任何表达式,只要您可以用HQL编写该表达式即可,因为NHibernate的Linq正在转换为HQL。

因此,如果您为Between编写扩展名,则代码可能如下所示:

var listka = 
    from i in FakturyZakupu.Queryable 
    where i.REJESTRY.REJ_KOD.Between(sbWartoscBetween1, sbWartoscBetween2) 
    select i;

lista = listka.ToList();
2021-03-10