Текст поиска содержит с QueryOver - программирование
Подтвердить что ты не робот

Текст поиска содержит с QueryOver

Я пытаюсь сделать это:

var list = Session.QueryOver<Person>()
    .Where(x => x.LastName.Contains(searchText))
    .List<Person>();

но я получаю эту ошибку: вызов нераспознанного метода: System.String: Boolean Contains (System.String)

У вас есть идея?

Обновление:

public class Person
{
    public virtual string FirstName { get; set; }
    public virtual string LastName { get; set; }
}
4b9b3361

Ответ 1

NHibernate не имеет прямого эквивалента С#, указанного в этой ссылке http://nhibernate.info/blog/2009/12/17/queryover-in-nh-3-0.html

Дополнительные ограничения

Некоторые SQL-операторы/функции не имеют прямого эквивалента в С#. (например, SQL, где имя типа "% anna%" ). Эти операторы перегрузки для QueryOver в классе ограничений, поэтому вы можете написать:

.Where(Restrictions.On(c = > c.Name).IsLike( "% anna%" ))

Существует также встроенный синтаксис, чтобы избежать квалификации типа:

.WhereRestrictionOn(c = > c.Name).IsLike( "% anna%" )

Ответ 3

var data = session.QueryOver<tablename>()    
                  .JoinQueryOver<if another table present>(x => x.Empsals)    
                  .WhereRestrictionOn(x => x.FName).IsLike("a%")        
                  .List<EmployeeDetails>();

Ответ 4

WhereRestrictionOn(x => x.FName).IsLike("a%") use like this