C#中的表达式树

时间:2015-10-25 18:40:26

标签: c# linq

如何将其转换为表达式树或使用linq,以便我可以在这些表达式层次结构上编写函数库?。

我见过这个图书馆,但我不确定我是否正确[{3}}

 max(avg(high1:3),avg(low1:3)) - min(avg(high1:3),avg(low1:3))

1 个答案:

答案 0 :(得分:1)

在运行时编译和执行代码总是有点挑战性。 你提到的图书馆只是一种方式。

您可以使用Microsoft的C#6.0和Visual Studio 2015附带的Roslyn以及C#团队。你无法想象它有多强大。以下是一些示例和演练:

https://github.com/dotnet/roslyn/wiki/Samples-and-Walkthroughs

以及其他一些介绍:

https://en.wikipedia.org/wiki/.NET_Compiler_Platform

以下是一些创建REPL的示例(类似于您想要的内容):

http://www.jayway.com/2015/05/09/using-roslyn-to-build-a-simple-c-interactive-script-engine/

使用Roslyn可以简单地做到这样:

var csScript =
    string.Format(@"
        var x = Math.Max(Math.Avg({0},3),Math.Avg(low1:3));
        x;
    ", high1, low1);
    //And this from the REPL
    Console.WriteLine(CSharpScriptEngine.Execute(csScript));