2009-01-12 10 views
7

Je veux créer une requête qui a plus de 3-4 Expression.Or? Mais Expression.Ou laisse moi juste ajouter deux expressions dedans.Comment définir plus de 2 Expression dans Expression.Ou

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))); 

Le code ci-dessus génère « Nom comme% ce% ou LastName comme% ce% ET Email1 comme% ce% et Email2 comme% cela.

Merci à l'avance.

+0

Ce qui suit est quelque chose que je trouve un certain temps b ack pour Entity Framework, le même code fonctionne avec nHibernate: http://stackoverflow.com/questions/1554663/composing-linq-to-entity-query-from-multiple-parameters/1554759#1554759 –

+0

@Alexandre: votre solution est pour un fournisseur LINQ. Cette question concerne l'API NHibernate Criteria. –

Répondre

8

Utilisation Disjunction au lieu de Or.

+0

Merci beaucoup, J'ai une autre question. Je veux interroger une autre table en interrogeant celui-ci. Par exemple, je veux obtenir des clients dont id = Group.CustomerId –

+0

S'il vous plaît créer une autre question pour cela, c'est sans rapport avec celui-ci. –

+0

ce lien est cassé –

2

Vous pouvez également utiliser au lieu de || Or() ou Disjunction().

Questions connexes