欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

多条件筛选数据

程序员文章站 2022-07-04 12:27:19
...

开发工具与关键技术:Visual Studio 

作者:胡宁淇

撰写时间:2019年6月1日

我们在查询数据的时,在某些条件下并不需要查询全部数据,而是通过条件来进行筛选我们所需要的数据,下面就是我们写的方法,多条件筛选数据

多条件筛选数据

在上图中我们看到了四个条件,三个下拉框和一个input标签,因为下拉框绑定的是数据库中的数据,所以我们用int来接收收据,input从页面传输过来的数据是字符串,所以我们用string类型接收

public ActionResult SelectTitles(LayuiTablePage layuiTablePage, int TitleTypeID, int PointID, int UnitID, string stem) {

我们通过联表查询查询出我们所需要的字段,创建一个变量来接收

        var listTitles = (from tbTitle in myModel.PW_Title

                          join tbTitleType in

myModel.SYS_TitleType on tbTitle.TitleTypeID equals tbTitleType.TitleTypeID

                          join tbDofd in myModel.SYS_Dofd on tbTitle.DofdID equals tbDofd.DofdID

                          join tbSubject in myModel.SYS_Subject

on tbTitle.SubjectID equals tbSubject.SubjectID

                          join tbPoint in myModel.SYS_Point on tbTitle.PointID equals tbPoint.PointID

                          join tbUnit in myModel.SYS_Unit on tbTitle.UnitID equals tbUnit.UnitID

                         用实体类接收查询出来的字段

                          select new TitlesInfor

                          {

                             TitleID =

tbTitle.TitleID,//题目ID

                              TitleType =

tbTitleType.TitleType,//题目类型

                              Dofd =

tbDofd.Dofd,//难度

                              Subject =

tbSubject.Subject,//科目

                              Point =

tbPoint.PointName,//知识点

                              Unit =

tbUnit.Unit,//使用单位

                              Stem =

tbTitle.Stem,//题目信息

                              RightKey =

tbTitle.RightKey,//正确答案

                              Remarks =

tbTitle.Remarks,//备注

                              ToVoidNo =

tbTitle.ToVoidNo,//是否作废

                              TitleTypeID =

tbTitle.TitleTypeID,//题目类型ID

                              PointID =

tbTitle.PointID,//知识点ID

                              UnitID = tbTitle.UnitID//使用单位ID

                          }).ToList();

把联表查询出来的数据进行筛选,因为页面四个条件中有三个传输的数据是ID,所以我们就进行判断,如果页面传过来的ID大于0,那么就在listTitles中进行查询,如果小于0就不进行处理

        if (TitleTypeID > 0)

        {

            listTitles = listTitles.Where(m

=> m.TitleTypeID == TitleTypeID).ToList();

        }

        if (PointID > 0)

        {

            listTitles = listTitles.Where(m

=> m.PointID == PointID).ToList();

        }

        if (UnitID > 0)

        {

            listTitles = listTitles.Where(m

=> m.UnitID == UnitID).ToList();

        }

最后一个条件传输过来的数据是字符串类型,所以我们用到的是模糊查询Contains

        if (!string.IsNullOrEmpty(stem))

        {

            listTitles = listTitles.Where(m

=> m.Stem.Contains(stem)).ToList();

        }

        int totals = listTitles.Count();

        List<TitlesInfor> listTitlesInfor = listTitles.OrderByDescending(m

=> m.ToVoidNo == false)

           .Skip(layuiTablePage.GetStartIndex()).Take(layuiTablePage.limit).ToList();

        LayuiTableData<TitlesInfor> layuiTableData = new LayuiTableData<TitlesInfor>()

        {

            count = totals,

            data = listTitlesInfor

        };

        return Json(layuiTableData, JsonRequestBehavior.AllowGet);

    }

我们在页面上输入看一下效果,如下图

多条件筛选数据

我们看到只要题目中含有小明两个字的都查询出来了
多条件筛选数据
多条件筛选数据