2009-01-12 8 views
7

Deseo crear una consulta que tenga más de 3-4 Expression.Or? Pero Expression. O simplemente déjame agregar dos expresiones dentro de él.Cómo establecer más de 2 expresiones en Expression.Or

if (!string.IsNullOrEmpty(keyword)) 
       query 
        .Add(Expression.Or(
          Expression.Like("Name", keyword, MatchMode.Anywhere), 
          Expression.Like("LastName", keyword, MatchMode.Anywhere))) 
        .Add(Expression.Or(
          Expression.Like("Email1", keyword, MatchMode.Anywhere), 
          Expression.Like("Email2", keyword, MatchMode.Anywhere))); 

El código anterior genera "Nombre como% este% o Apellido como% este% Y Email1 como% este% y Email2 como% este.

Gracias de antemano.

+0

El siguiente es algo que encontré un tiempo b Ack para Entity Framework, el mismo código funciona con nHibernate: http://stackoverflow.com/questions/1554663/composing-linq-to-entity-query-from-multiple-parameters/1554759#1554759 –

+0

@Alexandre: su solución es para un proveedor de LINQ. Esta pregunta es sobre la API de NHibernate Criteria. –

Respuesta

8

Uso Disjunction en lugar de o.

+0

Muchas gracias, Tengo otra pregunta. Quiero consultar otra tabla mientras consulto esta. Por ejemplo, quiero obtener clientes cuyo ID = Group.CustomerId –

+0

. Por favor, cree otra pregunta para eso, no está relacionado con este. –

+0

este enlace está roto –

2

también puede utilizar || lugar de o() o disyunción().

Cuestiones relacionadas