开发工具与关键技术:mvc
作者:黄志鹏
撰写时间:2019/5/20
在做项目的时候我们经常用到多表查询也就是我们常说的连表查询,下面我们来说说用连表查询来查询出我们想要的数据。首先我们要做的是把几个单表连在一起,找出我们想要的字段。我们再在视图那边做一个查找相对应内容的输入框来查找我们表格的数据。接下来我们先把几个表格根据主键和外键的关系连接。
首先我们先在几个表格中确定我们需要的字段。我们再把我们需要的字段封装在一个类中。
代码如下(本文所有代码均来源于本人在做项目)
public class qianfei
{
public int? qianfeibinrenID { get; set; }
public int? bingrenliebieID { get; set; }
public int? bingrenziliaoID { get; set; }
public string zonfeiyon { get; set; }
public string yaowubili { get; set; }
public string yaowujine { get; set; }
public string jizhang { get; set; }
public string anjinzone { get; set; }
}
接下来我们先查询出主表,同时具有其他表的主键ID作为本表的外键的我们姑且称它为主表。然后我们再加入副表,用副表的主键ID等于主表的外键ID,然后我们需要把查询出来的表格分页的的话我们就需要根据主表的主键ID来升序,然后我们根据select new关键字段来给封装类中的实体赋值。代码如下:
public ActionResult qfbnnmd(LayuiTablePage layuiTablePage ,string inserqianmm)
{
ReturnJson returnJson = new ReturnJson();
var lian = (from tbqianfeibinren in myModels.qianfeibinren
join tbbingrengziliao in myModels.bingrengziliao on tbqianfeibinren.bingrenziliaoID equals
tbbingrengziliao.bingrenziliaoID
join tbbingrenliebie in myModels.bingrenliebie on tbqianfeibinren.bingrenliebieID equals
tbbingrenliebie.bingrenliebieID
orderby tbqianfeibinren.qianfeibinrenID descending
select new qianfei
{
qianfeibinrenID=tbqianfeibinren.qianfeibinrenID,
bingrenliebieID=tbbingrenliebie.bingrenliebieID,
bingrenziliaoID=tbbingrengziliao.bingrenziliaoID,
zonfeiyon=tbqianfeibinren.zonfeiyon,
yaowubili=tbqianfeibinren.yaowubili,
yaowujine=tbqianfeibinren.yaowujine,
jizhang=tbqianfeibinren.jizhang,
anjinzone=tbqianfeibinren.anjinzone,
}).ToList();
LayuiTablePage layuiTablePage 分别封装分页的类和分页的参数 ,string inserqianmm 的意思是查找输入框的ID是字符串类型的。接下来便是查找框的判断代码了,我们先来判断查找
框中的内容是否为空和去除空白符。再用Lambda表达式来根据需要的字段来查找所有数据。
代码如下:
if (!string.IsNullOrEmpty(inserqianmm))
{
inserqianmm =inserqianmm.Trim();
lian = lian.Where(p =>p.name.Contains(inserqianmm)).ToList();
}
如果我们需要分页操作的话那么我们就加上分页的代码,具体代码如下:
List Employee = lian
.Skip(layuiTablePage.GetStartIndex())
.Take(layuiTablePage.limit)
.ToList();
LayuiTableData<qianfei> layuiTableData = new LayuiTableData<qianfei>();
layuiTableData.count =lian.Count();
layuiTableData.data = Employee;
return Json(layuiTableData, JsonRequestBehavior.AllowGet);
控制层这边的查询方法写好后我们就在视图那边把表格的渲染方法写出来,同时也完成查找框的代码。