C# &引用;“自投影”;林克

C# &引用;“自投影”;林克,c#,linq,select,lambda,expression,C#,Linq,Select,Lambda,Expression,我是System.Linq.Expressions命名空间的新手,但似乎您可以做一些非常棒的事情 我想使用System.Linq.Expressions对象创建一个“自投影”lambda表达式。比如: list.Select(element => element); 我偶然发现了一个示例,其中他们使用以下代码片段构建了一个“属性投影”lambda表达式: //creates something like: list.Select(element => element.[prop

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

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

 list.Select(element => element);
我偶然发现了一个示例,其中他们使用以下代码片段构建了一个“属性投影”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呢


谢谢

以下内容是否满足您的要求:

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

最近的一次可能很有意思你为什么要这么做<代码>列表很可能是
IEnumerable
的,因此
列表的结果也是如此。选择(e=>e)
也是,对吗?在运行时之前,我一直在不知道T的情况下尝试这样做。我使用System.Linq.Expressions对象和反射动态调用OrderBy.FYI,“自投影”lambda通常称为“标识”lambda,因为它的输出与输入“相同”。谢谢。这是有道理的。使用上面的示例(list.Select(element=>element)),看起来“parameter”表示“element”。