LINQ表达式:Nreco框架给出了编译错误

时间:2018-07-31 23:27:03

标签: c# linq nuget nreco

这是我第一次使用nuget,并且尝试从NRecoFramework编译动态lambda解析器示例,如下所示:

    var lambdaParser = new NReco.LambdaParser();
    var varContext = new Dictionary<string, object>();
    varContext["one"] = 1M;
    varContext["two"] = "2";

    Console.WriteLine(lambdaParser.Eval("two>one && 0<one ? (1+8)/3+1*two : 0", varContext)); // --> 5`

但是当我尝试编译时,无法识别LamdaParser()方法。

我已经将nuget和nreco框架导入了VisualStudio2017,但仍无法编译。

Print of My Code

已解决

我不好,问题是我同时导入了Nreco PackageNreco.LambdaParser Package,因为LamdaParser()方法在我无法编译的两个软件包中都退出了。删除Nreco.LamdaParser软件包后,问题已解决。

1 个答案:

答案 0 :(得分:1)

似乎框架站点上的示例已过时或完全错误。
他们的API documentation是最新的。

LambdaParserNReco.Linq命名空间中。您需要将代码更改为:

var lambdaParser = new NReco.Linq.LambdaParser();
var varContext = new Dictionary<string, object>();
varContext["one"] = 1M;
varContext["two"] = "2";

Console.WriteLine(lambdaParser.Eval("two>one && 0<one ? (1+8)/3+1*two : 0", varContext)); // --> 5`

或者,由于文件中有using NReco.Linq;声明,因此您还可以编写:

var lambdaParser = new LambdaParser();
var varContext = new Dictionary<string, object>();
varContext["one"] = 1M;
varContext["two"] = "2";

Console.WriteLine(lambdaParser.Eval("two>one && 0<one ? (1+8)/3+1*two : 0", varContext)); // --> 5`