Ausdruck.Lambda und Query Generation zur Laufzeit, einfachste "Wo" Beispiel
Ich versuche zu generieren, eine einfache Lambda-Ausdrucks zur Laufzeit, ohne Glück... so etwas wie dieses:
var result = queryableData.Where(item => item.Name == "Soap")
Hier ist mein Beispiel-Klasse und eine Vorrichtung queryable:
public class Item
{
public int Id { get; set; }
public string Name { get; set; }
}
IQueryable<Item> queryableData = ...;
Dann Generiere ich ein lambda-Ausdruck zur Laufzeit richtigen code folgt:
//"item" in "item =>..."
var item = Expression
.Parameter(typeof(Item), "item");
//property of my item, this is "item.Name"
var prop = Expression
.Property(item, "Name");
//then "Soap" in '... => item.Name=="Soap"'
var value = Expression.Constant("Soap");
//equality expression "==" in my primer
var equals = Expression.Equal(prop, value);
//then lambda
var lambda = Expression.Lambda<Func<Item, bool>>(equals, item);
//and here are the results
var results = queryableData.Where(lambda);
Großen Dank dtb für die Beratung!
InformationsquelleAutor der Frage CodeAddicted | 2011-11-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
In der folgenden Abfrage
den lambda-Ausdruck ist
Brauchen Sie nur zu konstruieren, die diesen Teil, nicht die Wo anrufen, die akzeptiert einen Ausdruck-Baum.
Den expression tree für den lambda-Ausdruck sieht wie folgt aus:
Code:
InformationsquelleAutor der Antwort dtb