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.