我需要将表达式从WinForms客户端传递到WebApi。我有以下表达:
var results = somelist.Select(p => p.Id).ToList<int>();
Expression<Func<MyObj, bool>> myexp = x => results.Contains(x.Id);
然后我只是做了:
var str = myexp.Body.ToString();
但是,在此特定示例中,表达式主体看起来像这样:
value(MyApp.MyForm + <> c__DisplayClass41_0).results.Contains(x.Id)
将字符串转换回表达式服务器端时显然不起作用。
有没有一种方法可以减少,编译任何一种更好的表达式?还是应该使用第三方解决方案,例如Remote.Linq或Serialize.Linq?
答案 0 :(得分:0)
这取决于您需要对服务器端的表达式做什么。
如果你真的只需要一个字符串表示,你可能想要实现一个 ExpressionVisitor。但是,这可能需要一些努力,具体取决于您需要支持的表达式类型。
如果您想转换回正确的表达式树并在服务器端执行表达式,那么绝对值得一看Remote.Linq。