EF 6拉姆达数据访问问题

Zeusro 2014-09-29 12:03:40

Department result;
Func<Department, bool> Func = x => x.Name == "Sales";
result = db.Department.AsNoTracking().FirstOrDefault(Func);
result = db.Department.FirstOrDefault(x => x.Name == "Sales");


两者看起来是一样的,但是结果生成的SQL语句让我非常无语

这个按顺序生成的。把拉姆达传给查询就变成了遍历整个表,这不坑爹么?
请问这是为什么?
还有,我还是想把拉姆达作为方法参数,请问解决方案是什么。
...全文
234 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wqewqewq1231 2016-07-27
  • 打赏
  • 举报
回复
求大神解决 用拉姆达公式求最近一个月的数据 怎么写 ?正常的SQL语句如下 select *from order where month(time)=(select month(max time)) from order and year(time)=(select year (max time)) from order 注:order 表明 time 时间的字段
threenewbee 2014-09-29
  • 打赏
  • 举报
回复
Func<Department, bool> Func = x => x.Name == "Sales"; -> Expression<Func<Department, bool>> Func = x => x.Name == "Sales";
threenewbee 2014-09-29
  • 打赏
  • 举报
回复
引用 5 楼 u012398331 的回复:
就是说并行化这个问题无解是吧。
SQL端怎么执行你用C#写的线程呢。 你必须做一个取舍,要么全部交给数据库,事实上我说了,数据库也有并行的优化,不用操心。 要么你自己查询,不用数据库
  • 打赏
  • 举报
回复
这个时候一定使用 Expression<Func<Department, bool>> 这个样的表达式树 这个才使用的才会去执行
Zeusro 2014-09-29
  • 打赏
  • 举报
回复
就是说并行化这个问题无解是吧。
threenewbee 2014-09-29
  • 打赏
  • 举报
回复
当然,你要注意一个是LINQ To SQL,一个是LINQ To Objects。 前者翻译成SQL在数据库端执行(MS SQL内部其实已经有并行查询的机制了),后者是直接在内存中查询,因此才可以“并行”,它依赖的是本地代码。
Zeusro 2014-09-29
  • 打赏
  • 举报
回复
引用 1 楼 caozhy 的回复:
Func<Department, bool> Func = x => x.Name == "Sales"; -> Expression<Func<Department, bool>> Func = x => x.Name == "Sales";
谢谢。能不能额外问个问题。 如果遇到并行化查询AsParallel怎么办?这里面没有那个Expression重载
l2999019 2014-09-29
  • 打赏
  • 举报
回复
la
引用 1 楼 caozhy 的回复:
Func<Department, bool> Func = x => x.Name == "Sales"; -> Expression<Func<Department, bool>> Func = x => x.Name == "Sales";
正解 EF中的lamda需要这样定义.
Zeusro 2014-09-29
  • 打赏
  • 举报
回复
非常感谢各位热心人士

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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