.NET中如何有效合并lambda表达式并解决相关问题?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1593个文字,预计阅读时间需要7分钟。
目录 + 解决方案:+ 完美解决 + 事件的起因是公司一个小伙子询问了我一个问题:海哥,来帮我看看这段代码怎么不执行 + FuncReport, bool nameFilter=x=> x.Name==test; DbContext.Report.Where(x=> x.State==1 && nameFilter(x))
目录
- 解决方案:
- 完美解决
事情的起因是公司一个小伙子问了我个问题 “海哥,来帮我看下这段代码怎么不行”
Func<Report,bool> nameFilter = x=>x.Name == "test"; DbContext.Report.Where(x=>x.State==1 && nameFilter(x));
我一看,好家伙,这么骚的代码都能让你想出来,正常情况下用Linq To Object是可以这么操作的,但是EF的IQueryable查询是不能这么操作的。
Linq To Object是直接执行表达式,他就是个委托方法,里面嵌套多少层委托和方法都是能直接执行的IQueryable并不会执行表达式和方法,是把表达式转换为对应的Sql语句来执行,解析到nameFilter的时候他就懵逼了,这是啥玩意儿啊,sql里面没有这种东西啊,他就转换不了了。
小伙子知道后明细很失望,那不能啊,也不是我想显摆我的技术,就是想让小伙子能继续他的骚操作,给他来点海克斯科技与狠活。
本文共计1593个文字,预计阅读时间需要7分钟。
目录 + 解决方案:+ 完美解决 + 事件的起因是公司一个小伙子询问了我一个问题:海哥,来帮我看看这段代码怎么不执行 + FuncReport, bool nameFilter=x=> x.Name==test; DbContext.Report.Where(x=> x.State==1 && nameFilter(x))
目录
- 解决方案:
- 完美解决
事情的起因是公司一个小伙子问了我个问题 “海哥,来帮我看下这段代码怎么不行”
Func<Report,bool> nameFilter = x=>x.Name == "test"; DbContext.Report.Where(x=>x.State==1 && nameFilter(x));
我一看,好家伙,这么骚的代码都能让你想出来,正常情况下用Linq To Object是可以这么操作的,但是EF的IQueryable查询是不能这么操作的。
Linq To Object是直接执行表达式,他就是个委托方法,里面嵌套多少层委托和方法都是能直接执行的IQueryable并不会执行表达式和方法,是把表达式转换为对应的Sql语句来执行,解析到nameFilter的时候他就懵逼了,这是啥玩意儿啊,sql里面没有这种东西啊,他就转换不了了。
小伙子知道后明细很失望,那不能啊,也不是我想显摆我的技术,就是想让小伙子能继续他的骚操作,给他来点海克斯科技与狠活。

