使用QueryOver搜索文本包含
本文关键字:包含 文本 搜索 QueryOver 使用 | 更新日期: 2024-06-14 07:25:55
我正在尝试这样做:
var list = Session.QueryOver<Person>()
.Where(x => x.LastName.Contains(searchText))
.List<Person>();
但我得到了这个错误:未识别的方法调用:System.String:布尔包含(System.String)
你有主意吗?
更新:
public class Person
{
public virtual string FirstName { get; set; }
public virtual string LastName { get; set; }
}
NHibernate没有本链接中提到的直接C#等价物http://nhibernate.info/blog/2009/12/17/queryover-in-nh-3-0.html
附加限制
某些SQL运算符/函数在C#中没有直接的等价项。(例如,SQL,其中的名称类似于"%anna%")。这些运营商在Restrictions类中重载QueryOver,因此您可以编写:
Where(Restrictions.On(c=>c.Name).IsLike("%anna%")
还有一个内联语法可以避免类型的限定:
.WhereRestrictionOn(c=>c.Name).IsLike("%anna%")
看起来QueryOver不支持Contains方法。你可以尝试使用IsLike限制:
使用表达式树对LIKE进行nhibernate查询
NHibernate 3.0使用子字符串搜索
queryover和(x类';a';或y类';a';)
var data = session.QueryOver<tablename>()
.JoinQueryOver<if another table present>(x => x.Empsals)
.WhereRestrictionOn(x => x.FName).IsLike("a%")
.List<EmployeeDetails>();
WhereRestrictionOn(x => x.FName).IsLike("a%") use like this