Ich kann zwei Möglichkeiten sehen, wie Sie Lambda dynamisch generieren können. Sie könnten Reflection.Emit versuchen, IL (den .Net-Bytecode) direkt zu generieren und sie als Lambda zu bezeichnen, oder Sie können den System.CodeDom und Microsoft.CSharp.CSharpCodeProvider verwenden, um den Code von Konstrukten höherer Ebene zu generieren. Was Sie tun möchten, hängt davon ab, wie der Benutzer dieses Zeug eingeben soll. Wenn Sie möchten, dass der Benutzer C# schreibt, können Sie einfach den eingebauten Compiler verwenden.
Linq dynamisch generieren sollte einfacher sein. Sie sollten in der Lage sein, LINQ-Abfragen als Ausdrucksbäume in Runtime zu generieren und sie dann zur Ausführung in ein IQueryable zu übergeben. Ich schlage vor, dass Sie sich die Dokumentation zu IQueryable ansehen, um mehr darüber zu erfahren. Ein anderer Weg wäre, ein paar Linq-Abfragen vorzudefinieren und es dem Benutzer dann zu erlauben, sie zu verketten. Dies sollte praktikabel sein, da jede Linq-Abfrage ein IEnumerable zurückgibt, das von der nächsten Linq-Abfrage konsumiert werden kann.
Klare Ratschläge. Wir haben das für die Konfiguration von Workflows getan und es funktioniert ganz gut. –
der einzige Nachteil ist, dass Sie Probleme mit voller/teilweise vertrauen können, die Ihren Code daran hindern würde in asp.net – viggity
das ist eine Möglichkeit, aber es ist keine Antwort auf meine Frage ... – Sklivvz