繁体   English   中英

使用动态表达式构建一个简单的lambda

[英]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源代码,以了解如何工作。 但这只会让我更加困惑。 我认为图书馆对于我想要的东西来说太复杂了。 我不需要排序,分组和所有这些花哨的东西。

基本上我的问题是:

  1. 我可以使用动态表达式动态地生成如下lambda吗: x => x.News吗?
  2. 如果是这样,那我该如何使用动态表达式呢?

我发现很难开始。


我试过的是这样的:

        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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM