使用Ef框架进行分页..EF模糊查询..EF多表内连接查询

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/agonie201218/article/details/44628137

  先来DAL层代码。。稍后解释。。。

  public List<Staff> Getstaff(string DepId,string staffname,DateTime date ,int pageIndex ,int pageSize)
        {
            using (OASysEntities entity = new OASysEntities())
            {
               List<Staff> list = new List<Staff>();
               if (string.IsNullOrEmpty(DepId))
               {
                   list = entity.Staff.Where(m => m.StaffName.Contains(staffname) && m.JoinDate >= date).OrderByDescending(m => m.StaffId).Skip(((pageIndex - 1) * pageSize)).Take(pageSize).Select(s => s).ToList();
               }
               else
               {
                   list = entity.Staff.Where(m => m.StaffName.Contains(staffname) && m.JoinDate >= date && m.DepId.ToString() == DepId).OrderByDescending(m => m.StaffId).Skip(((pageIndex - 1) * pageSize)).Take(pageSize).Select(s => s).ToList();
               }
                List<Staff> list1 = new List<Staff>();
               foreach (var s in list)
               {
                   s.DepName=entity.Department.SingleOrDefault(m => m.DepId == s.DepId).DePName;
                   list1.Add(s);
               }
                return list1;
               
            }
        }

     一、EF模糊查询:

    bool Contains(string value):返回一个值,该值指示制定的System.String对象是否出现在此字符串中。相当于like %value%。

    Contains等价于like '%key%' 指示指定的 String 对象是否出现在此字符串中。

    EndsWith等价于like '%key' 确定此字符串实例的结尾是否与指定的字符串匹配。

    StartsWith等价于like 'key%'  确定此字符串实例的开头是否与指定的字符串匹配。

    二、EF分页:

 对于List<>分页的方法

   Skip():

   

  Take():

   

list = entity.Staff.Where(m => m.StaffName.Contains(staffname) && m.JoinDate >= date).OrderByDescending(m => m.StaffId).Skip(((pageIndex - 1) * pageSize)).Take(pageSize).Select(s => s).ToList();
   其中,pageIdex为当前第几页,pageSize为每一页有几行数据。  

   所以这段代码可以解释为先排序获取Skip)第((pageIndex - 1) * pageSize)行后的数据,也就是第(pageIndex - 1) 以后的数据。再减去Take)第pageSize行后的数据就得到了第pageIdex页。

  三、多表内联查询:

我的数据库表为:
   DepID为外键。
                  
         
<pre name="code" class="csharp"> List<Staff> list1 = new List<Staff>();
               foreach (var s in list)
               {
                   s.DepName=entity.Department.SingleOrDefault(m => m.DepId == s.DepId).DePName;
                   list1.Add(s);
               }
                return list1;
               
            }




    说明:再实体层也就是Model里的Staff类(主键表)必须添加一个外键字段如public string DepName { get; set; },这样才可以使定义的List<Staff> list1拥有DepName属性。
BLL层和UI层我就不写了。。。。


展开阅读全文

没有更多推荐了,返回首页