2016-11-07 9 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に2番目の引数を渡すことによって、別の解決策があります。私の答えを見てください。 –

+1

私はタイトルを変更しました。 –

答えて

1

whildcardsを追加するか、またはIsLikeに第2引数を追加する必要があります。

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

文字列のどこにでもwhildcardを置くことができます。開始時にのみ、または終了時にのみ。

それとも

...IsLike(searchString, MatchMode.Anywhere) 

またMatchMode.StartまたはMatchMode.Endを使用することができます。

関連する問題