3
有什么办法可以使用LINQ动态查询库(System.Linq.Dynamic)来评估一个基于ExpandoObject属性的条件吗?下面的代码抛出的“var e...
”行例外,他说“没有属性或字段‘重’型ExpandoObject存在”: -动态LINQ查询ExpandoObject?
const string TestCondition = "MyStateBag.Foo >= 50 && MyStateBag.Bar >= 100";
dynamic myStateBag = new ExpandoObject();
myStateBag.Foo = 70;
myStateBag.Bar = 100;
var p = Expression.Parameter(typeof(ExpandoObject), "MyStateBag");
var e = DynamicExpression.ParseLambda(new[] { p }, null, TestCondition);
var result = e.Compile().DynamicInvoke(myStateBag);
Assert.IsTrue(result);
另一种方法是实施“StateBag的”作为一本字典,但是这会导致稍微更冗长的条件字符串,例如MyStateBag["Foo"] >= 50 && MyStateBag["Bar"] >= 100
。由于这将被用作用户脚本环境的基础,如果可以实现,我宁愿使用更简单的ExpandoObject语法。
这就是我所怀疑的,无论如何。我可能会考虑NCalc作为替代方案... –