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

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

public List Getstaff(string DepId,string staffname,DateTime date ,int pageIndex ,int pageSize)

{

using (OASysEntities entity = new OASysEntities())

{

List list = new List();

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 list1 = new List();

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():

0818b9ca8b590ca3270a3433284dd417.png

Take():

0818b9ca8b590ca3270a3433284dd417.png

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为外键。

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

 List list1 = new List();

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 list1拥有DepName属性。

BLL层和UI层我就不写了。。。。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值