Dynamisch Zu Erstellen Linq Lambda-Ausdruck

Okay, meine Vermutung ist, dass dies schon irgendwo beantwortet und ich bin einfach nicht vertraut genug mit der syntax noch nicht verstanden, so mit mir tragen.

Den Nutzern meiner web-app-filter für eine lange Liste von Elementen in einer gridview, auf die der Zugriff über eine linqdatasource-Steuerelement. Ich bin mit dem OnSelecting Veranstaltung, um weitere filter-Elemente. Ich möchte filter die Elemente basierend auf der Auswahl der Benutzer im DropDownLists.

Zum Beispiel, wählen Sie "Titel" "Enthält" "Fred"
Dies führt zu

e.Result = dbContext.Opps.Where(opp => opp.Title.Contains("Fred"));

Oder "Beschreibung" "Enthält nicht" "Alpha"
Ergebnisse in

 e.Result = dbContext.Opps.Where(opp => !opp.Description.Contains("Alpha"));

Möchte ich aufbauen, dass die Expression (System.Linq -.Ausdrücke.Ausdruck>), dynamisch, anstatt verschachtelte switch-Ausdrücke zu generieren, da gibt es eine Reihe von Feldern, die ich überprüfen möchten, und ich auch mit dem StartsWith und EndsWith überprüft. Wenn ich könnte, erstellen Sie einen Ausdruck als string, etwa so:

string stringExpression = string.Format("opp => opp.{0}.{1}(\"{2}\")",
    ddlCustomFilter.SelectedValue,
    ddlFilterType.SelectedValue,
    txtFilterText.Text);

Und dann irgendwie haben es umgewandelt werden in einen Ausdruck... ist das möglich? Oder sollte ich nur den sauren Apfel beißen und erzeugen alle die switch () - Anweisungen erforderlich, um die verschiedenen Ausdrücke?

InformationsquelleAutor Dave | 2010-02-19
Schreibe einen Kommentar