.NET EF LINQ 分页(Skip/Take)造成数据重复原因
来源:互联网 发布:手机交友调查数据 编辑:程序博客网 时间:2024/05/16 10:37
出问题代码如下:
List<Family_Base_Service_Order> orders = null; try { orders = db.Family_Base_Service_Order.Where(c => c.EngineerId == userid && (c.CRMCheck == OrderState.JieDan || c.CRMCheck == OrderState.WaitForPay)) .OrderByDescending(c => c.ServiceTime) .Skip((index-1)*pagesize) .Take(pagesize) .ToList() } catch (Exception) { orders = null; }
代码逻辑是没有问题的,但是会造成分页出来的数据有周期重复性。
经调试去掉Skip 和Take 查询出来的结果是没有问题,看了一下排序的字段ServiceTime,发现都是空,问题可能就在这里,于是做一下修改,解决问题:
List<Family_Base_Service_Order> orders = null; try { orders = db.Family_Base_Service_Order.Where(c => c.EngineerId == userid && (c.CRMCheck == OrderState.JieDan || c.CRMCheck == OrderState.WaitForPay)) .OrderByDescending(c => c.ServiceTime) .ToList() .Skip((index-1)*pagesize) .Take(pagesize) .ToList(); } catch (Exception) { orders = null; }
总结:当使用Linq to ef 进行数据库分页调取数据时,要排序的字段可能为空时,应将所有的查询出再进行分页操作。
(PS:最好还是用存储过程做分页吧)
1 0
- .NET EF LINQ 分页(Skip/Take)造成数据重复原因
- LINQ:使用Take和Skip实现分页
- .NET Linq 中的 Skip和Take
- LINQ Take和Skip
- LINQ分页和排序,skip和Take 用法
- LINQ分页和排序,skip和Take 用法
- LINQ分页和排序,skip和Take 用法
- LINQ分页和排序,skip和Take 用法
- c#linq里的Skip和Take处理分页笔记
- VS2008下使用Linq To Entity的Skip().Take()分页查询时遇到数据结果不对的问题
- Linq中的Take和Skip
- Linq中的Take和Skip
- LINQ系列:LINQ to SQL Take/Skip
- Linq to Sql中的Skip、Take
- C# 使用Take和Skip实现分页
- Linq学习笔记(1.3)——Take、Skip
- Linq中Take、TakeWhile、Skip、SkipWhile的比较
- Linq中Take、TakeWhile、Skip、SkipWhile的比较
- Xcode各版本官方下载链接
- ScrollView与WebView结合使用时,设置webview字体大小的时候出现下方留白解决方案
- UIWebView替代品WKWebView的使用及js交互
- 理解MySQL——架构与概念
- 用js解析经json序列化后的C#的DateTime类型数据
- .NET EF LINQ 分页(Skip/Take)造成数据重复原因
- nodejs实战关于上传图片
- Oracle PL/SQL简介
- Scala特质的混入顺序
- 单击开始计时按钮后,程序开始从 0 以秒计时
- “千年老二”搜狐:从没有真正意义上成为第一
- Google VR SDK
- 我的第一篇博客
- Oracl pl/sql块的语法