我尝试使用DynamicExpressionParser
的{{1}}方法,并设法轻松地解析了字符串表达式(即:ParseLambda
或x=> X.Name == "John"
),这对{ {1}}个条件。但是我的问题在于,尝试将表达式解析为x=> x.Name.Contains("John")
,在此我想根据找到的数据返回一个匿名对象。
示例:
Where
基本上,我只有这样的字符串表达式可以工作:
Select
我想要的是这个
myList.Select(p=> new { p.Name, p.LastName })
Iv尝试了 ParseLambda 方法的一些重载,但是我遇到了各种异常。我正在关注guidelines from their github repository。
使用Data Object Initializers(customers.Select(“ new(CompanyName as Name,Phone)”););)给出的示例仅适用于类型化类,不适用于我想做的匿名对象。
我也设法使用CSharpScript(myList.Where("p=> p.Name == \"John\"");
方法)使它以前工作了,但是解析时间太可怕了(慢了大约20倍),因为它又要重新编译代码了。因此,我正在寻找替代方案。
为弄清为什么无法使用myList.Select("p=> new { p.Name, p.LastName }")
,下面是一些尝试的代码示例:
两者都导致EvaluateAsync
。
还有很多其他代码,如果不对代码进行重大更改,我将无法轻松复制它们。