nhibernate queryover

nhibernate join



queryover y(x como ''a'' o y como ''a'') (3)

Hola ¿Hay alguna forma elegante de combinar ''me gusta'' y ''o'' cuando estoy usando API queryover? para ''me gusta'' hay algo como:

query.WhereRestrictionOn(x=>x.Code).IsLike(codePart)

para ''o'' puedo hacer algo como:

query.Where( x=>x.Code == codePart || x.Description== codePart)

pero ¿cómo puedo crear una consulta como esta?

selecciona * de n donde código como ''% abc%'' o una descripción como ''% abc%''


query.Where(Restrictions.On<Type>(x => x.Code).IsLike(codePart) || Restrictions.On<Type>(x => x.Description).IsLike(codePart))


Otra versión de esto, que dependiendo del gusto, te puede gustar, es la siguiente:

query.Where(Restrictions.Disjunction() .Add(Restrictions.On<Type>(e => e.Code).IsLike(codePart)) .Add(Restrictions.On<Type>(e => e.Description).IsLike(codePart)));


Puede usar la clase Disyunción NHibernate para hacerlo de una manera más elegante (en mi humilde opinión):

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)

y entonces:

query.Where(disjunction)

Cada "O" es una instrucción separada, que ayuda si desea agregar los predicados condicionalmente.