通过已有Func构造Expression表达式问题

gaogar2008 2013-03-21 05:57:19
如题,我有一个Func<TEntity, bool> func,我想通过这个Func构造一个Expression<Func<TEntity, bool>>表达式,Expression<Func<TEntity, bool>> exp = m => func(m);这种方法我试过,在EF中不能使用。我需要在EF中能使用的。谢谢大家!
...全文
861 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
guoyun911 2015-01-29
  • 打赏
  • 举报
回复
引用 10 楼 guoyun911 的回复:

Func<Product, bool> predicate = m => m.Id == 1;
Expression<Func<Product,bool>> expression = m => predicate(m);
不知道这个样写可不可以
当我没说。。。不能用
guoyun911 2015-01-29
  • 打赏
  • 举报
回复

Func<Product, bool> predicate = m => m.Id == 1;
Expression<Func<Product,bool>> expression = m => predicate(m);
不知道这个样写可不可以
showjim 2013-03-22
  • 打赏
  • 举报
回复
引用 8 楼 gaogar2008 的回复:
也就是说无法通过委托构建表达式了
一般来说就是不行了。 这就像是要反编译,需要IL层次的知识,而且不同的.NET版本的委托指针内存模式还不一样。
gaogar2008 2013-03-22
  • 打赏
  • 举报
回复
引用 7 楼 sbwwkmyd 的回复:
引用 6 楼 gaogar2008 的回复: 应该是func是一个Func<TEntity, bool>,exp是一个Expression<Func<TEntity, bool>>,其中这个TEntity和bool是一致的。 Func<TEntity, bool>只是一个委托,Expression<Func<TEntity, bool>>才是表达式。 一个类比与程序执行结果,一个类比与源程序……
也就是说无法通过委托构建表达式了
showjim 2013-03-22
  • 打赏
  • 举报
回复
引用 6 楼 gaogar2008 的回复:
应该是func是一个Func<TEntity, bool>,exp是一个Expression<Func<TEntity, bool>>,其中这个TEntity和bool是一致的。
Func<TEntity, bool>只是一个委托,Expression<Func<TEntity, bool>>才是表达式。 一个类比与程序执行结果,一个类比与源程序。光有个结果,谁知道是那个程序跑出来的?
gaogar2008 2013-03-22
  • 打赏
  • 举报
回复
引用 5 楼 sbwwkmyd 的回复:
引用 4 楼 gaogar2008 的回复: 是的,func也是Expression<Func<TEntity, bool>>,应该如何操作? 你这个需求不需要修改啊 C# code ? 1 Expression<Func<TEntity, bool>> exp = func; 就可以了,如果要修改,应该是调用Expression.XXX这些函数重新构造
应该是func是一个Func<TEntity, bool>,exp是一个Expression<Func<TEntity, bool>>,其中这个TEntity和bool是一致的。
showjim 2013-03-22
  • 打赏
  • 举报
回复
引用 4 楼 gaogar2008 的回复:
是的,func也是Expression<Func<TEntity, bool>>,应该如何操作?
你这个需求不需要修改啊
Expression<Func<TEntity, bool>> exp = func;
就可以了,如果要修改,应该是调用Expression.XXX这些函数重新构造
gaogar2008 2013-03-22
  • 打赏
  • 举报
回复
引用 3 楼 sbwwkmyd 的回复:
除非你的func也是Expression<Func<TEntity, bool>>才能修改,否则它只是一个委托(函数指针)
是的,func也是Expression<Func<TEntity, bool>>,应该如何操作?
showjim 2013-03-22
  • 打赏
  • 举报
回复
除非你的func也是Expression<Func<TEntity, bool>>才能修改,否则它只是一个委托(函数指针)
superliu1122 2013-03-22
  • 打赏
  • 举报
回复
应该是不行,Func<TEntity, bool> func过来已经被编译完了,不能再转化成表达式树了
gaogar2008 2013-03-22
  • 打赏
  • 举报
回复
求助,求解答!谢谢!

17,741

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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