2009-01-12 8 views
7

Ich möchte eine Abfrage erstellen, die mehr als 3-4 Expression.Or hat? Aber Expression. Oder lass mich einfach zwei Ausdrücke darin einfügen.Wie Sie mehr als 2 Ausdruck in Expression.Or setzen

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

Der obige Code erzeugt „Name% in diesem% oder Namen VZ wie% in diesem% UND Email1 wie% in diesem% und Email2 wie dies%.

Vielen Dank im Voraus.

+0

Das folgende ist etwas, das ich eine Weile b gefunden ack für Entity Framework, der gleiche Code funktioniert mit nHibernate: http://stackoverflow.com/questions/1554663/composing-linq-to-entity-query-from-multiple-parameters/1554759#1554759 –

+0

@Alexandre: Ihre Lösung ist für einen LINQ-Anbieter. Diese Frage bezieht sich auf die NHibernate-Kriterien-API. –

Antwort

8

Verwenden Disjunction statt Or.

+0

Vielen Dank, Ich habe eine andere Frage. Ich möchte eine andere Tabelle abfragen, während ich diese abfrage. Beispiel ich möchte Kunden erhalten, deren ID = Group.CustomerId –

+0

Bitte erstellen Sie eine andere Frage für das, es hat nichts damit zu tun. –

+0

dieser Link ist gebrochen –

2

Sie können auch anstelle von oder() oder Disjunktion() verwenden ||.