查询数据,实现简化代码

当查询一个表的全部数据,当然要使用到分页数据啦,layuiTablepage这个是一个类名,这类里面存放了一些分页的数据。我们需要从一个表里面查询表的全部数据,根据ID查询表的全部信息,还要进行数据类型的转换。

因为需要表与表之间的连接,所以我们用feath遍历modular里面的每一个ID,根据ID查询表里面的数据。在这里需要遍历它,查询表里面对应的操作类型的ID。

查询出来需要把两个结果放到一起,返回到表格上,所以需要一个类,而这个类里面需要包含两个表的字段,简单说就是需要把两格合到一起。

所以呢,再添加一个类

 public class ModularAndDetail:Models.SYS_Modular
    {
        /// <summary>
        /// 这个表的id合集
        /// </summary>
        public string DetailIds { get; set; }

        public List<ModularDetail> ModularDetailVos { get; set; }
    }

还要在遍历之前创建一个new对象,每遍历一次将数据传给这个对象一次。前面我们已经在这个类里面继承了这张表,所以我们可以直接把modularAndDetail给到这个表的ID字段里面。

可能上面陈述会有点乱,在这里补充一下思路吧!

我是先把modular的数据先查出来,再把modularAndDetails对应的每条数据查出来,因为两个查出来返回到页面上是无法一起显示出来的,那该怎么办呢,是不是就需要一个类,这个类里面需要包含两个表的数据,,所以我们创建了一个类名为ModularAndDetail的类。这个类接收对应的两个表的数据。然后统计数据和分页提取数据。

public ActionResult SelectModularAndDetail(LayuiTablePage layuiTablePage)
        {
            List<SYS_Modular> modular = (from tbModular in myModel.SYS_Modular
                                         select tbModular).ToList();

            List<ModularAndDetail> modularAndDetails = new List<ModularAndDetail>();

            foreach (SYS_Modular item in modular)
            {
                ModularAndDetail modularAndDetail = new ModularAndDetail();
                //表
                modularAndDetail.ModularID = item.ModularID;
                modularAndDetail.ModularName = item.ModularName;

                List<ModularDetail> modularDetail = (from tbModularDetail in myModel.SYS_ModularDetail
                                                     join tbOpType in myModel.SYS_OpType
                                                     on tbModularDetail.OpTypeID equals tbOpType.OpTypeID
                                                     where tbModularDetail.ModularID == modularAndDetail.ModularID
                                                     select new ModularDetail
                                                     {
                                                         OpTypeID = tbModularDetail.OpTypeID,
                                                         OpType = tbOpType.OpType
                                                     }).ToList();

                modularAndDetail.ModularDetailVos = modularDetail;
                modularAndDetails.Add(modularAndDetail);
            }

然后,我们启动项目在浏览器就把所以数据显现出来了。

数据虽然是出来了,但是,你们有没有发现上面的代码看起来就比较繁琐,这主要为了方面大家理解,而下面将步入我们的主要内容,简化代码。

由于视图里面没有设置page参数,也就没有分页,所以控制器这里可以把分页提取数据给删掉了。

下面将是重新写一个查询数据的代码,只不过比原来的要简化很多。

在这里直接统计数据,利用这个包含两个表数据的这个类 ModularAndDetail 将两个表的数据使用子查询查出来,给到ModularDetailVos里面。

//统计数据
            int totalCount = myModel.SYS_Modular.Count();
            //查询数据
            List<ModularAndDetail> modularAndDetails = (from tbModular in myModel.SYS_Modular
                                                       select new ModularAndDetail {
                                                           ModularID = tbModular.ModularID,
                                                           ModularName = tbModular.ModularName,
                                                           ModularDetailVos = (from tbModularDetail in myModel.SYS_ModularDetail
                                                                              join tbOpType in myModel.SYS_OpType
                                                                              on tbModularDetail.OpTypeID equals tbOpType.OpTypeID
                                                                              where tbModularDetail.ModularID == tbModular.ModularID
                                                                              select new ModularDetail {
                                                                                  OpTypeID = tbModularDetail.OpTypeID,
                                                                                  OpType = tbOpType.OpType.Trim(),
                                                                                  ModularDetailID = tbModularDetail.ModularDetailID
                                                                              }).ToList()
                                                       }).ToList();

                                                           

            LayuiTableData<ModularAndDetail> layuiTableData = new LayuiTableData<ModularAndDetail>();
            layuiTableData.count = totalCount;
            layuiTableData.data = modularAndDetails;
            return Json(layuiTableData, JsonRequestBehavior.AllowGet);

        }

这下子是不是就显得比较直观了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值