【发布时间】:2020-10-10 15:21:14
【问题描述】:
我需要将表达式从 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 等 3rd 方解决方案?
【问题讨论】:
-
如果您在两个项目(WinForms 和 WebAPI)中都使用 JSON.NET,那么您可以尝试在这个问题的接受答案中描述的解决方案,stackoverflow.com/questions/23253399/serialize-expression-tree