entityframework + Linq 分页

来源:互联网 发布:运行指数平滑算法 编辑:程序博客网 时间:2024/06/08 12:50

使用EF方便了我们操作数据库,使用Linq和lamda表达式,方便了我们对数据的操做.以及集合,数组等数据结构的操作.Linq其实是.net3.5之后新加如的语法,其本质还是会被翻译为sql语句来执行的.而lamada表达式其本质就是泛型委托的和扩展方法以及类型推断等多种特性共同作用的结果.

下边来看一些常用的数据集合的操作:

1,登陆操作,纯粹的Linq

 ERPEntities entity = new ERPEntities();                String userName = String.Empty;                String password = PublicUtil.Encrypt(model.Password);                IEnumerable<ERPUser> users = (from u in entity.ERPUser where u.TrueName == model.UserName && u.UserPwd == password select u);                if (users != null && users.Count() > 0)                    userName = users.First().TrueName;                if (String.IsNullOrEmpty(userName))                {                    ModelState.AddModelError("UserName", "用户名不存在");                }


2,下边是一个根据用户较色查找权限的,纯粹的lamda表达式以及lamda表达式和linq的混写.

                        ERPEntities entity = new ERPEntities();                        var qx = entity.ERPJiaoSe.Where(p => entity.ERPUser.Where(u => u.TrueName == userName).Select(u => u.JiaoSe).FirstOrDefault().Contains(p.JiaoSeName) && 2 == 2).Select(Q => new { Q.QuanXian, Q.ID });                        IEnumerable<String> quanxian = from c in entity.ERPJiaoSe where (from u in entity.ERPUser where u.TrueName == userName select u.JiaoSe).FirstOrDefault().Contains(c.JiaoSeName) select c.QuanXian;


3,下边是一个分页,

  int pageIndex = 0;            int pageSize = 10;            ERPEntities entity = new ERPEntities();            var list = (from kq in entity.ERPWorkRiZhi orderby kq.TimeStr descending select kq).Skip(pageIndex*pageSize).Take(pageSize);


linq和lamda表达式操作集合数据非常方便,.net里边包含的扩展的泛型方法能操纵很多用户自定义的数据类型.