我正在使用System.Linq.Dynamic命名空间构建一个基于字符串的谓词,并希望向用户提供的字符串添加一些额外的验证和格式设置。更具体而言,我试图避免用户在想要在字符串中提供日期时必须键入ToDate("2014/06/13"),方法是确定他要比较的参数的数据类型是DateTime,并在日期前后注入DateTime()字符串。从字符串中获取Lambda的代码:
var p = Expression.Parameter(t
基本上,我在运行时编译表达式,然后用DynamicInvoke方法调用它们--所有这些方法都应该返回布尔值,但问题是,当有字符串比较时,它就失败了。假设像{x.SomeProp == "value"}值SomeProp这样的表达式是"value",但是当我在该表达式上执行DynamicInvoke时,将适当的对象传递给它并将返回值转换为bool,我得到这是我用来构建表达式的代码。Expression.Lambda(exp, par