Wir haben eine List<SomeType>
und möchten in der Lage sein, verschiedene Aktionen ausführen, wie die Auswahl von Elementen, die einige Kriterien erfüllen. Wir möchten, dass diese Tests vom Benutzer im Text zur Verfügung gestellt werden, also schauen wir uns C# Expression Evaluator an.Verwenden Sie C# Expression Evaluator zum Filtern einer Liste
Es kann sicherlich für diesen Zweck verwendet werden, aber ich habe Mühe zu sagen, ob ein csharpeval
Delegat als ein Lambda verwendet werden kann, wenn Sie LINQ verwenden. Wir möchten, dass unsere gespeicherten Ausdrücke auf jedes Objekt angewendet werden.
z.B. Nur "o.FirstName == "Tom"
und nicht speichern Sie die gesamte Liste Ausdruck wie list.Where(o => o.FirstName == 'Tom')
.
Methoden, um einen Ausdruck einmal zu kompilieren und gegen verschiedene Eingabedaten zu laufen, werden durch ScopeCompile
zur Verfügung gestellt, aber ich bin nicht sicher, ob diese mit Lambda-Methoden kompatibel sind. Kann mir jemand helfen?
Haben Sie in Roslyn direkt für diese Verwendung untersucht? https://github.com/dotnet/roslyn/wiki/Scripting-API-Samples#expr – user9993
@ user9993 nein, obwohl ihr Beispiel "Erzeuge & erstelle ein C# -Skript und führe es mehrfach aus" ziemlich ähnlich aussieht. Offensichtlich kann ich eine explizite Schleife schreiben, Lambdas sind hauptsächlich für Stil :) –
http://Stackoverflow.com/q/1707854/1271037, http://Stackoverflow.com/q/821365/1271037 – dovid