こんにちはqueryover APIを使用しているときに「like」と「or」を組み合わせるエレガントな方法はありますか? 「のような」のようなものがあります:
query.WhereRestrictionOn(x=>x.Code).IsLike(codePart)
「または」の場合、次のようなことができます:
query.Where( x=>x.Code == codePart || x.Description== codePart)
しかし、どうすればこのようなクエリを作成できますか?
「%abc%」のようなコードまたは「%abc%」のような説明からnから*を選択します
query.Where(Restrictions.On<Type>(x => x.Code).IsLike(codePart) ||
Restrictions.On<Type>(x => x.Description).IsLike(codePart))
NHibernate Disjunctionクラスを使用して、これをよりエレガントな(IMHO)形式で行うことができます。
var disjunction= new Disjunction();
disjunction.Add(Restrictions.On<Type>(e => e.Code).IsLike(codePart));
disjunction.Add(Restrictions.On<Type>(e => e.Description).IsLike(codePart));
//(and so on)
その後:
query.Where(disjunction)
各「OR」は個別の命令であり、述語を条件付きで追加する場合に役立ちます。
これの別のバージョンは、好みによっては次のようになります。
query.Where(Restrictions.Disjunction()
.Add(Restrictions.On<Type>(e => e.Code).IsLike(codePart))
.Add(Restrictions.On<Type>(e => e.Description).IsLike(codePart)));