首页 新闻 会员 周边

扩展方法Single里的lambda为什么不能是语句体??

0
[已解决问题] 解决于 2012-07-24 16:37

如上图!!!!!!!!!!!!!!!!!!!

koi的主页 koi | 初学一级 | 园豆:4
提问于:2012-07-16 15:16
< >
分享
最佳答案
0

因为你的Single方法,接收的参数是Expression<Func<T, bool>>,如果你用一个lambda表达式:

i => i.Sub_Name == "11" && true;

它是可以被转化成一个Expression<Func<T,bool>>的。而这个lambda表达式

i => { return i.Sub_Name == "11" && true; }

不能隐式转换成Expression<Func<T,bool>>。原因你可以这么认为:由于你的lambda表达式里具有块语句,因此很难转换成对应的表达式语句。虽然你这句最终可以翻译成SQL的,但是编译器无法预估,因此包含块语句的lambda表达式直接不支持转成expression tree了。

奖励园豆:5
水牛刀刀 | 大侠五级 |园豆:6350 | 2012-07-16 15:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册