EF 分页

public class PageListDto<T>
    {
        public int Count { get; set; }
        public List<T> Data { get; set; }
    }
 public static PageListDto<T> GetPageList<T, S>(this IQueryable<T> source, int pageIndex, int pageSize, Expression<Func<T, S>> orderBy, bool isDESC = false)
        {
            Type type = typeof(T);
            PageListDto<T> result = new PageListDto<T>();
            result.Count = source.Count();
            if (isDESC)
            {
                result.Data = source.OrderByDescending(orderBy).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
            }
            else
            {
                result.Data = source.OrderBy(orderBy).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
            }

            return result;
        }
 var dwadw = db.Z_TagInfo.Where(p => p.Id > 1)
                    .GetPageList(1, 10, p => p.Status);
时间: 2024-10-24 23:34:10

EF 分页的相关文章

存储过程分页 Ado.Net分页 EF分页 满足90%以上

存储过程分页: 1 create proc PR_PagerDataByTop 2 @pageIndex int, 3 @pageSize int, 4 @count int out 5 as 6 select top(@pageSize) * from dbo.userInfo where ID not in 7 ( 8 select top((@pageIndex-1)*@pageSize) ID from dbo.userInfo 9 ) 10 set @count = (select C

EF分页中的陷阱

(一) 前言                                                                   EF使用非常简单,但是如果使用不当就会误入EF陷阱中.下面讲解了几种分页方式的对比,以及各种方式的缺陷. (二) 陷阱一   Expression<Func<T, TResult>> 和Func<T, TResult>的区别        说明:System.Linq.Expressions.Expression<Fun

EF 分页查询优化

按照通常的方式分页查询至少要查询数据两遍,一个操作是查询总数,另一个是查询数据,这样有些耗时 这里介绍一个基于EF的插件 EntityFramework.Extended,当然这个插件有很多的功能,比方说批量删除.批量修改.批量查询.缓存查询等 这里只介绍批量查询的方法 通过SQL Server Profilter监视生成的SQL代码,发现只连接了一次数据库,非常的厉害 不解释直接上代码 通用分页查询方法: 1 /// <summary> 2 /// 分页查询 3 /// </summa

EF分页

先来看看几个LINQ to SQL的几个函数. Take 说明:获取集合的前n个元素:延迟.即只返回限定数量的结果集. var q = (  from e in db.Employees  orderby e.HireDate  select e)  .Take(5); 语句描述:选择所雇用的前5个雇员. Skip  说明:跳过集合的前n个元素:延迟.即我们跳过给定的数目返回后面的结果集. var q = (  from p in db.Products  orderby p.UnitPrice

关于EF分页查询报错(Count must have a non-negative value.)的解决方案

具体的异常信息如下,一开始没有写日志只看到错误信息:Count must have a non-negative value.,从表面意思可以看出来是Count值出现了负数,所以报错,查了半天的原因也没有看出来为什么,直到后面,我把Linq表达式输了出来,发现Skip(-10),我一想分页查询会根据页码跳过前面页码的记录数,所以会用Skip来跳过,但是这里的Skip数量为-10,这是为什么呢,我想了一下会不会是页码或者每页记录数有问题,于是我看了一下代码,果然发现没有给分页查询的PageInde

sql server 2008 中使用EF分页

InnerException = {System.Data.SqlClient.SqlException (0x80131904): 'OFFSET' 附近有语法错误.在 FETCH 语句中选项 NEXT 的用法无效.   在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)   在 System.Data

EF基本操作增、删、查、改、分页,join……等

一.批量添加数据 1 static void Main(string[] args) 2 { 3 add(); 4 add2(); 5 Console.ReadKey(); 6 } 7 8 static void add() 9 { 10 DemoDbEntities db = new DemoDbEntities(); 11 Stopwatch st = new Stopwatch(); 12 st.Start(); 13 for (int i = 0; i < 1000; i++) 14 {

EF增删查改基类

/// <summary> /// EF DAL CURD基类 /// </summary> /// <typeparam name="T"></typeparam> public class BaseDAL<T> where T : class, new() { /// <summary> /// 上下文网关 /// </summary> protected SchoolEntities db = n

FE+MVC分页

public ActionResult Create() { return View(); } [HttpPost] public ActionResult Create(Books book) { book.CreateDate = DateTime.Now; dbContext.Book.Add(book); var res = dbContext.SaveChanges(); if (res > 0) { //return Content("添加成功"); return R