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);
}
}

就是不让编译,怎么回事?
...全文
132 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
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");

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧