Ich erstelle einen dynamischen Ausdruck, der Elemente in einer Liste nach einer Regel (Lambda exp.) Sortiert. Dies ist der Code:Dynamisch erzeugte Ausdrücke
Expression<Func<String, String>> exp = o => o;
MethodCallExpression orderByExp = Expression.Call(typeof(Enumerable), "OrderBy",
new Type[] { typeof(String), exp.Body.Type }, Expression.Parameter(typeof(IEnumerable<String>), "list"), exp);
Jetzt habe ich zuvor erstellte Ausdruck auf bestimmte Daten ausführen möchten es zu sortieren, aber es funktioniert nicht, weil einige seltsame Ausnahmen wie „Lambda Parameter nicht in scope“ oder „Argument Ausdruck ist nicht gültig ".
var data = new String[] { "asdasdasd", "asdads", "123", "xcvxcvs", "ASDSD" };
// one of attempts: doesn't work
var result = data.AsQueryable().Provider.CreateQuery<String>(orderByExp);
Kann jemand mir dabei helfen?
Das ganze Bild ist weiter: ich cre wollen aß eine Abfrage (Regeln wie Reihenfolge, wo, kann sonst sein) auf einige Daten, die ich gerade nicht habe. Aber ich kenne seinen Typ. Diese Abfrage wird später an einen Webdienst gesendet, der über die Daten verfügt und die Abfrage ausführen wird. – Kamarey
und vergessen, das ist eine einfache LINQ to Objects. – Kamarey
Okay, jetzt bin ich verwirrt - wenn Sie die Abfrage an einen Webdienst senden, klingt es nicht so, als wäre es wirklich LINQ to Objects. Was möchten Sie beim Bestellen tun - der Webservice oder der lokale Prozess? –