如何将字符串化的linq表达式解析为对象?

时间:2019-04-12 17:42:38

标签: c# linq asp.net-core lambda entity-framework-core

我尝试使用DynamicExpressionParser的{​​{1}}方法,并设法轻松地解析了字符串表达式(即:ParseLambdax=> 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)”););)给出的示例仅适用于类型化类,不适用于我想做的匿名对象。

我也设法使用CSharpScriptmyList.Where("p=> p.Name == \"John\""); 方法)使它以前工作了,但是解析时间太可怕了(慢了大约20倍),因为它又要重新编译代码了。因此,我正在寻找替代方案。

为弄清为什么无法使用myList.Select("p=> new { p.Name, p.LastName }") ,下面是一些尝试的代码示例:

error A

error B

两者都导致EvaluateAsync

还有很多其他代码,如果不对代码进行重大更改,我将无法轻松复制它们。

0 个答案:

没有答案