C# 使用QueryOver搜索包含的文本
我正在尝试这样做:C# 使用QueryOver搜索包含的文本,c#,nhibernate,queryover,C#,Nhibernate,Queryover,我正在尝试这样做: var list = Session.QueryOver<Person>() .Where(x => x.LastName.Contains(searchText)) .List<Person>(); NHibernate没有此链接中提到的直接C#等价物 附加限制 有些SQL运算符/函数在C#中没有直接等价物。 (例如,名称为“%anna%”的SQL语句)。这些运营商 限制类中QueryOver的重载,因此您可以编写: .Whe
var list = Session.QueryOver<Person>()
.Where(x => x.LastName.Contains(searchText))
.List<Person>();
NHibernate没有此链接中提到的直接C#等价物 附加限制 有些SQL运算符/函数在C#中没有直接等价物。 (例如,名称为“%anna%”的SQL语句)。这些运营商 限制类中QueryOver的重载,因此您可以编写: .Where(限制.On(c=>c.Name).IsLike(“%anna%”)) 还有一种内联语法可以避免类型限定: .WhereRestrictionOn(c=>c.Name).IsLike(“%anna%”)
看起来QueryOver不支持Contains方法。您可以尝试IsLike限制:
var data=session.QueryOver()
.JoinQueryOver(x=>x.Empsals)
.WhereRestrictionOn(x=>x.FName).IsLike(“a%”)
.List();
谢谢,这就是工作。但是NHProf警告我性能问题(使用“like”)。我可能会保留我的当前代码,一个Nhibernate查询和一个linq查询后的结果。
public class Person
{
public virtual string FirstName { get; set; }
public virtual string LastName { get; set; }
}
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