.NET中如何有效合并lambda表达式并解决相关问题?

更新于
2026-09-27 02:14:00
24阅读来源:SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1593个文字,预计阅读时间需要7分钟。

.NET中如何有效合并lambda表达式并解决相关问题?

目录 + 解决方案:+ 完美解决 + 事件的起因是公司一个小伙子询问了我一个问题:海哥,来帮我看看这段代码怎么不执行 + 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分钟。

.NET中如何有效合并lambda表达式并解决相关问题?

目录 + 解决方案:+ 完美解决 + 事件的起因是公司一个小伙子询问了我一个问题:海哥,来帮我看看这段代码怎么不执行 + 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里面没有这种东西啊,他就转换不了了。

小伙子知道后明细很失望,那不能啊,也不是我想显摆我的技术,就是想让小伙子能继续他的骚操作,给他来点海克斯科技与狠活。

阅读全文