有没有办法在C#中反序列化表达式,我想将表达式存储在数据库中并在运行时加载它们.
我需要一种方法来在将来的某个时刻重新创建动态生成的报告.简而言之,我需要将特定的linq查询(每个报告不同)存储到数据库中,然后使用动态Linq执行查询.
这一切都很好,但我找不到将表达式转换为字符串的方法.
如:
Expression<Func<Product, bool>> exp = (x) => (x.Id > 5 && x.Warranty != false);
Run Code Online (Sandbox Code Playgroud)
应成为:
"Product.Id > 5 && Product.Warranty != false"
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?
有没有办法将现有的Func委托转换为这样的字符串:
Func<int, int> func = (i) => i*2;
string str = someMethod(func); // returns "Func<int, int> func = (i) => i*2"
Run Code Online (Sandbox Code Playgroud)
或者至少接近它