【问题标题】:"Self projecting" Linq“自我投影”Linq
【发布时间】:2011-08-24 14:53:10
【问题描述】:

我是 System.Linq.Expressions 命名空间的新手,但您似乎可以做一些非常棒的事情。

我想使用 System.Linq.Expressions 对象创建一个“自投影”lambda 表达式。比如:

 list.Select(element => element);

我偶然发现了一个示例,他们使用以下 sn-p 构建“属性投影” lambda 表达式:

 //creates something like: list.Select(element => element.[propertyName])

 var parameter = Expression.Parameter(elementType, "posting");
 Expression property = Expression.Property(parameter, propertyName);

 LambdaExpression lambda = Expression.Lambda(property, new[] { parameter });

但是我怎样才能创建一个自投影的 lambda?

谢谢!

【问题讨论】:

  • 您为什么要这样做? list 可能是IEnumerable<T>,所以list.Select(e => e) 的结果也会是,对吧?
  • 我试图在不知道 T 的情况下执行此操作,直到运行时。我正在使用 System.Linq.Expressions 对象和反射来动态调用 OrderBy。
  • 仅供参考,“自投影”lambda 通常称为“身份”lambda,因为它的输出与其输入“相同”。

标签: c# linq select lambda expression


【解决方案1】:

以下是否符合您的要求:

var parameter = Expression.Parameter(elementType, "posting");
var lambda = Expression.Lambda(parameter, new[] { parameter });

【讨论】:

  • 谢谢。这就说得通了。使用上面的示例(list.Select(element => element)),看起来“参数”代表“元素”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-15
  • 2019-12-15
  • 1970-01-01
  • 1970-01-01
  • 2015-12-25
  • 1970-01-01
  • 2011-01-09
相关资源
最近更新 更多