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

LINQ Expressions: the Nreco Framework give compile error

这是我第一次使用 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 Package and Nreco.LambdaParser Package,因为 LamdaParser() 方法在我无法编译的两个包中都存在。删除 Nreco.LamdaParser 包后问题就解决了。

框架站点上的示例似乎已过时或完全错误。
他们的 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`