EntityFramework中LINQ To SQL的lumbda表达式的错误应用
来源:互联网 发布:视频监控软件破解版 编辑:程序博客网 时间:2024/06/11 07:02
前面写了一篇文章说使用lumbda表达式写好查询条件,然后在linq中使用
Func<DB.Task, bool> query = (m) => m.AssignDate.HasValue && q.startDate.Date == m.AssignDate.Value.Date;var list = bt.Task.Where(query).ToList();
当时这样用的最大的好处就是,m.AssignDate.Value.Date
可以使用而不报错。而最大的问题也就出现在这里。用SQL Server Profiler抓了一下请求的sql语句,大吃一惊,请求的数据等价于
select * from Task --has no Where /(ㄒoㄒ)/~~
果断的加了10W条数据,网站不负重望成了屎状,如果sqlserver不在本机的话,计算带宽更是扯了个DAN了。
而如果把query
的内容直接放到Where
里面,就会报错,原因就是Date不能用。
var list = bt.Task.Where((m) => m.AssignDate.HasValue && System.Data.Entity.DbFunctions.DiffDays(q.startDate, m.AssignDate) >= 0).ToList();
用EF提供的方法进行日期的判断就不会报错
Func<DB.Task, bool> query = (m) => m.AssignDate.HasValue && System.Data.Entity.DbFunctions.DiffDays(q.startDate, m.AssignDate) >= 0;
恩,又报错了,说DbFunctions
不能在linq外使用。
Expression<Func<DB.Task, bool>> query = (m) => m.AssignDate.HasValue && System.Data.Entity.DbFunctions.DiffDays(q.startDate, m.AssignDate) >= 0;
这样可以了,说实话,我已经被里面的泛型弄晕了。
Expression的命名空间:
using System.Linq.Expressions;
以上仅为个人看法,如果对你有帮助,那就谢天谢地了,如果您觉得很烂,就使劲在下面吐槽吧。
0 0
- EntityFramework中LINQ To SQL的lumbda表达式的错误应用
- linq to sql 高速缓存的应用
- LINQ To SQL中IN的用法
- LINQ to SQL 中可以使用的LINQ函式
- 在LINQ to SQL中处理“更新已被其它用户删除对象”的错误
- Entityframework的简单应用
- Entityframework的简单应用
- Linq表达式的简单应用
- LINQ to SQL的不足
- LINQ to SQL的不足
- LINQ to SQL 的EntitySet)>)
- linq to sql 的学习
- Linq to sql 的学习体会
- Linq To Sql的总结
- 简单的linq to sql
- Linq To Sql的优缺点
- C#的Linq to SQL
- 转载网上已篇关于linq to sq,entityframework,ado.net性能比较的文章
- Python: 什么是*args和**kwargs
- [JAVA]模拟自动售货机
- android 队列形式播放提示语音
- 烽火传递 dp+单调队列
- 自由控制灰度或原色ImageView
- EntityFramework中LINQ To SQL的lumbda表达式的错误应用
- ArrayList中去除重复数据,以及去除重复的自定义对象
- struts2---获得Sevlet对象的2*2种方法
- 一个简单的文件读写实例
- inline内联函数详解
- Party
- Implement Queue using Stacks
- AuthorizeAttribute认证失败Redirect后依旧会进入Action
- 【JZOJ4585】Robert 的军队