LINQ的问题

hujiejieda2 2013-01-25 12:43:28
class AAA
{
public int id { get; set; }
}
class Program
{
static void Main(string[] args)
{
var aaa = new AAA();
aaa.id = 123;
Expression param = Expression.Parameter(typeof(AAA), "x");
Expression body = Expression.Property(param, "id");
Expression<Func<AAA, int>> lambda = (Expression<Func<AAA, int>>)Expression.Lambda(body, param);
var x = lambda.Compile().Invoke(aaa);
Console.WriteLine(x);
}
}

就是不让编译,怎么回事?
...全文
110 5 点赞 打赏 收藏 举报
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Kation 2013-01-25
你想要的结果是什么? 出什么错误?
  • 打赏
  • 举报
回复
showjim 2013-01-25
Expression<Func<AAA, int>> lambda = x => x.id;
难道楼主想手动模拟编译器行为?
  • 打赏
  • 举报
回复
catchdream 2013-01-25
这2个都可以,你的错误如下: 错误 2 参数“2”: 无法从“System.Linq.Expressions.Expression”转换为“System.Linq.Expressions.ParameterExpression[]” 所以直接 Expression<Func<AAA, int>> lambda = (Expression<Func<AAA, int>>)Expression.Lambda(body, (ParameterExpression)param); 也可以
  • 打赏
  • 举报
回复
Expression param = Expression.Parameter(typeof(AAA), "x"); => ParameterExpression param = Expression.Parameter(typeof(AAA), "x");
  • 打赏
  • 举报
回复
threenewbee 2013-01-25
Expression param = Expression.Parameter(typeof(AAA), "x"); Expression body = Expression.Property(param, "id"); => var param = Expression.Parameter(typeof(AAA), "x"); var body = Expression.Property(param, "id");
  • 打赏
  • 举报
回复
相关推荐
发帖
C#
加入

10.6w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2013-01-25 12:43
社区公告

让您成为最强悍的C#开发者