2016-11-07 56 views
0

我知道它已經爲這個錯誤提供了一些解決方案,但我沒有找出爲什麼我得到這個錯誤。當我加載列表沒有過濾它的作品。在NHibernate QueryOver中使用IsLike

if (searchString != "") { 
      query = _pagedDataQueryProcessor.GetDefaultQuery<Data.Entities.Password>() 
       .Where(
       Restrictions.Disjunction() 
        .Add(Restrictions.On<Data.Entities.Password>(x => x.Name).IsLike(searchString)) 
        .Add(Restrictions.On<Data.Entities.Password>(x => x.Description).IsLike(searchString)) 
        .Add(Restrictions.On<Data.Entities.Password>(x => x.PasswordText).IsLike(searchString)) 
    ); 
} 

我發現了什麼問題是

解決方案:

if (searchString != "") { 
      query = _pagedDataQueryProcessor.GetDefaultQuery<Data.Entities.Password>() 
       .Where(
       Restrictions.Disjunction() 
        .Add(Restrictions.On<Data.Entities.Password>(x => x.Name).IsLike("%" + searchString + "%")) 
        .Add(Restrictions.On<Data.Entities.Password>(x => x.Description).IsLike("%" + searchString + "%")) 
        .Add(Restrictions.On<Data.Entities.Password>(x => x.PasswordText).IsLike("%" + searchString + "%")) 
); 

我怎麼改?我沒有「%」。

這裏我想過濾一個列表,但是當我在輸入中寫了一些東西時,我總是得到一個空的列表。

搜索字符串是過濾詞

data.entities.password是在數據庫列表

有人可以幫助我,我不知道我做出錯誤的。

+0

無論「_pagedDataQueryProcessor」是什麼。 –

+1

通過向IsLike傳遞第二個參數還有另一種解決方案。看到我的答案。 –

+1

我改編了標題,希望對你有好處。 –

回答

1

您需要添加whildcards或將第二個參數添加到IsLike

...IsLike("%" + searchString + "%")) 

您可以將字符卡放在字符串的任何位置,例如只在開始或僅在結束時。

或者

...IsLike(searchString, MatchMode.Anywhere) 

您還可以使用MatchMode.StartMatchMode.End