Entity Framework 分页处理

在SQL中进行分页,网上已经有很多例子了,在这里我使用Linq to SQL让C#来生成分页代码,首先创建分页的扩展方法:

  
    public static class Extensions
    {
        /// <summary>
        /// 分页
        /// </summary>
        /// <param name="list"> 数据源 </param>
        /// <param name="order"> 排序表达式 </param>
        /// <param name="page"> 第几页 </param>
        /// <param name="size"> 每页记录数 </param>
        /// <param name="count"> 记录总数 </param>
        /// <returns></returns>
        public static IQueryable<T> Pagination<T,TKey>(this IQueryable<T> list, Expression<Func<T, TKey>> order, int page, int size, out int count)
        {
            count = list.Count();
            return list.Distinct().OrderBy(order).Skip((page - 1) * size).Take(size);
        }
    }

 

然后在程序中调用起来也很方便(只需要在linq查询中直接调用扩展方法即可):
                 int  count;
                 var  q = ( from  in  context.WT_Tickets
                     join  b  in  context.WT_OrderForm  on  a.OrderId  equals  b.Id
                     select   new
                    {
                        BusNo = a.BusNumber,
                        OrderId = b.Id,
                        OrderDate = b.OrderDateTime,
                    }).Where(t=>t.OrderId.Length > 5).Distinct().Pagination(1, 10,  out  count);
                 var  data = q.ToList();
 
另外一种分页方式,按偏移量和页面记录数来获取数据:
    public static class Extensions
    {
        /// <summary>
        /// 分页
        /// </summary>
        /// <param name="list">数据源</param>
        /// <param name="offset">偏移量</param>
        /// <param name="limit">查询记录数</param>
        /// <param name="count">记录总数</param>
        /// <returns></returns>
        public static IQueryable<T> Pagination<T>(this IQueryable<T> list,int offset,int limit,out int count)
        {
            count = list.Count();
            return list.OrderBy(t => t).Skip(offset).Take(limit);
        }
    }
View Code

 

转载于:https://www.cnblogs.com/ChrisLee2011/p/4286069.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值