设计网站建设常州/培训机构咨询
如图我们如何从模块表中联查模块明细表连带把操作类型表里面下的字段内容查出来呢?,列表中嵌套列表是是怎么查询出来呢下面我们来学习一下吧
public ActionResult SelectModularAndDetail()
{ 从模块这张表查出数据orderby表里面的ID排序,查出里面的总条数。那怎么查出另一个表所对应的数据呢,这样我们就要用到自定义的实体类ModularAndDetailVo 继承模块表 ModularDetailVo继承模块明细表 把继承模块明细表的那个Vo public List< ModularDetailVo > ModularDetails {get;set;} 就列表嵌套列表。如图
List list = (from tbModular in myModel.SYS_Modular
orderby tbModular.ModularID
select new ModularAndDetailVo
{
ModularID = tbModular.ModularID,//查出主表ID
ModularName = tbModular.ModularName.Trim(),//名字
ModularDetails是一个列表所以就要在写一个查询,就是所为的查询中嵌套查询。
从tbModularDetail这张表join tbOpType查出tbModularDetail里面的OpTypeID equals(等于) tbOpType这张表里面的OpTypeID,然后where从tbModularDetail.ModularID == tbModular.ModularID 外部查询结果作为子查询条件就是上一个查询的结果然后orderby排序
ModularDetails = (from tbModularDetail in myModel.SYS_ModularDetail
join tbOpType in myModel.SYS_OpType on tbModularDetail.OpTypeID equals tbOpType.OpTypeID
where tbModularDetail.ModularID == tbModular.ModularID //外部查询结果作为子查询条件// 等于tbModularDetail张表里面的外键等于外面tbModular这表里面的主键
其实就是把俩个查询嵌套在一起,关键的一句就是where tbModularDetail.ModularID == tbModular.ModularID 里面的外键等于外面表里面的主键,相当于连查的感觉,里面的外键要和外面表里面的主键要有关联,你不能说这两张表啥关联的没有的拿去关联就只是想 连在一起,那样的话就麻烦了数据也就重复了,所以说表于表之间要有关联。嵌套查询呢理论上是可以无限嵌套查询的只要的你理的清楚就可以了。
orderby tbModularDetail.OpTypeID
select new ModularDetailVo
{
ModularDetailID = tbModularDetail.ModularDetailID,//主表ID
ModularID = tbModularDetail.ModularID,// ModularID等于主表里面的ModularID
OpTypeID = tbModularDetail.OpTypeID, //主表里面的外键ID
OpType = tbOpType.OpType.Trim()//另一个标的名称
}).ToList()
}).ToList();
//封装返回输出
LayuiTableData layuiTableData = new LayuiTableData
{
count = list.Count(),//因为没有分页所以 count就等于查出来数据 列表的行数
data = list
};
return Json(layuiTableData, JsonRequestBehavior.AllowGet);}
页面输出结果内容如图: