Wie kann ich die kombinieren von LINQ-Ausdrücken in ein?

Ich habe ein Formular mit mehreren Felder (Firmenname, PLZ, etc.) die es einem Benutzer ermöglicht, um die Suche für Unternehmen in einer Datenbank. Wenn der Benutzer Werte in mehr als einem Feld, dann muss ich die Suche über alle Felder. Ich bin mit LINQ zur Abfrage der Datenbank.

So weit ich es geschafft habe, zu schreiben, eine Funktion, die schaut auf Ihre Eingabe und schalten Sie ihn in eine Liste von Ausdrücken. Ich will nun zu drehen, dass die Liste in einem einzigen Ausdruck, die ich ausführen können, über die LINQ-provider.

Mein Erster Versuch war wie folgt

private Expression<Func<Company, bool>> Combine(IList<Expression<Func<Company, bool>>> expressions)
    {
        if (expressions.Count == 0)
        {
            return null;
        }
        if (expressions.Count == 1)
        {
            return expressions[0];
        }
        Expression<Func<Company, bool>> combined = expressions[0];
        expressions.Skip(1).ToList().ForEach(expr => combined = Expression.And(combined, expr));
        return combined;
    }

Aber dieser schlägt mit einer Ausnahme fehl-Nachricht entlang der Linien von "Der binary-operator Und ist nicht definiert...". Hat jemand eine Idee, was ich tun müssen, um zu kombinieren, diese Ausdrücke?

EDIT: Korrigiert die Zeile, wo ich vergessen hatte, weisen Sie das Ergebnis der and ' Ing die Ausdrücke zusammen, um eine variable. Danke für den Hinweis Leute.

InformationsquelleAutor gilles27 | 2009-12-17
Schreibe einen Kommentar