[英]Build a simple lambda with dynamic expressions
我正在尝试了解动态表达式的工作原理。 因此,出于学习目的,我想执行以下操作:
我有一个对象,当前可以使用使用lambda表达式的Linq语句访问该对象:
someObj.IncludeStory(x => x.News);
我想做的是用字符串替换labmda x => x.News
,例如:
string myLambda = "x => x.News";
someObj.IncludeStory(myLambda);
显然,您不能那样做,但是据我了解,您可以使用Dynamic Expressions(?)达到相同的效果。
我一直在查看System.Linq.Dynamic源代码,以了解如何工作。 但这只会让我更加困惑。 我认为图书馆对于我想要的东西来说太复杂了。 我不需要排序,分组和所有这些花哨的东西。
基本上我的问题是:
x => x.News
吗? 我发现很难开始。
var expression = @"IncludeStory(x => x.News)";
var p = Expression.Parameter(someObj.GetType(), "News");
var e = myAlias.DynamicExpression.ParseLambda(new[] { p }, null, expression);
var result1 = e.Compile().DynamicInvoke(someObj);
您可以使用DynamicExpression.ParseLambda将字符串转换为表达式树。 有关更多详细信息,请参阅VS2010 C:\\ Program Files(x86)\\ Microsoft Visual Studio 10.0 \\ Samples \\ 1033-> CSharpSamples-> LinqSamples-> DynamicQuery随附的项目(我认为这也是更高版本安装的一部分)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.