C# 在NHibernate中,如何向Restrictions.Eq添加替换?

C# 在NHibernate中,如何向Restrictions.Eq添加替换?,c#,nhibernate,C#,Nhibernate,我想添加一个Restrictions.Eq,在列名周围用TSQL替换。我该怎么做 string location = "Columbus OH"; var requestQuery = Session.CreateCriteria<Request>(); requestQuery.Add(Restrictions.Eq("Replace(LocationName,',','')", location); string location=“哥伦布OH”; var requestQu

我想添加一个Restrictions.Eq,在列名周围用TSQL替换。我该怎么做

string location = "Columbus OH";

var requestQuery = Session.CreateCriteria<Request>();
requestQuery.Add(Restrictions.Eq("Replace(LocationName,',','')", location);
string location=“哥伦布OH”;
var requestQuery=Session.CreateCriteria();
Add(Restrictions.Eq(“Replace(LocationName,,,,,,”)位置);

一种可能的方法是使用
SqlProjection
。例如:

string location = "Columbus OH";

var session = NHSession.GetCurrent();
var query = session.CreateCriteria<Request>();
query.Add(Restrictions
    .Eq( // SQL Server function call
        Projections.SqlProjection(
            "Replace(LocationName,',','') as Replacement"
            , new[] {"Replacement"}
            , new IType[] {NHibernateUtil.String})
        , location // searched value
    ));
var list = query.List<Request>();
string location=“哥伦布OH”;
var session=NHSession.GetCurrent();
var query=session.CreateCriteria();
添加(限制)
.Eq(//SQL Server函数调用
Projections.SqlProjection(
替换(位置名称,,,'')为替换
,新[]{“替换”}
,新的IType[]{NHibernateUtil.String})
,位置//搜索值
));
var list=query.list();

您需要注册函数
Replace
或使用SQL表达式,请参阅此处了解更多详细信息