将表达式解析为包含特定标识符的数组

时间:2017-10-06 13:43:20

标签: c# .net dynamic-expresso

我正在使用ParseAsExpression从字符串表达式构建动态lamda表达式。问题是我无法弄清楚如何解析包含像mylist.Contains(x.Id)

这样的对象的数组的表达式

完整示例

 var list = new int[] { 4,5,6};
 var whereFunction = new Interpreter().SetVariable("mylist", list);    
 whereFunction.ParseAsExpression<Func<Person, bool>>("(person.Age == 5 && person.Name.StartsWith(\"G\")) || person.Age == 3 && mylist.Contains(person.Id)", "person");

2 个答案:

答案 0 :(得分:2)

现在,您可以通过为每个方法实现别名扩展方法来解决这个问题,例如<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" /> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="box1">x</div> <button class="box1">x</button> <div class="box2"><i class="fa fa-remove"></i></div> <button class="box2"><i class="fa fa-remove"></i></button> =&gt; Contains

Exists

我认为这是一个愚蠢的解决方法,但它会起作用。

答案 1 :(得分:1)

我可以确认这是一个错误:https://github.com/davideicardi/DynamicExpresso/issues/68

目前Array.Contains不起作用。

更新:

已在2.0.2版中修复。