• linq动态查询


    近日做几个项目用到linq动态查询,但微软官方所提供的那些动态查询机制相当复杂,   网上也有不少网友发过一些动态查询的方案,本人觉得那些方案比较繁索,也不易理解,今提供一种易理解简单实用的方法.

    方法如下:

    在中间层写:

      public List<View_InvoiceTransferLog> GetTransferLogByCondition(DateTime? startDate,
                DateTime? endDate,int? startNum,int? endNum, InvoiceLogType logType)
            {
                int theType = (int)logType;
                IQueryable<View_InvoiceTransferLog> query = from view in Context.View_InvoiceTransferLogs
                                                            where
                                                            (startDate == null || view.LogDate >= startDate) &&
                                                            (endDate == null || view.LogDate <= endDate) &&
                                                            (startNum == null || view.InvoiceStartNum >= startNum) &&
                                                            (endNum == null || view.InvoiceEndNum <= endNum) &&
                                                            view.TransferType == theType
                                                            select view;
                return query.ToList();
            }

    调用过程如下:

     在ui层写

            protected void SearchButton_Click(object sender, EventArgs e)
            {
                if (!HaveCondition())
                {
                    GetAllDataByStatus();
                    return;
                }
                DateTime? startDate = null;
                DateTime? endDate = null;
                int? startNumber = null;
                int? endNumber = null;

                if (!ValidateData())
                {
                    return;
                }
               
                //get select condition
                //
                if (!string.IsNullOrEmpty(StartDate.Text.Trim()))
                {
                    startDate = DateTime.Parse(StartDate.Text.Trim());
                }
                if (!string.IsNullOrEmpty(EndDate.Text.Trim()))
                {
                    endDate = DateTime.Parse(EndDate.Text.Trim());
                }
                if (!string.IsNullOrEmpty(StartNum.Text.Trim()))
                {
                    startNumber = int.Parse(StartNum.Text.Trim());
                }
                if (!string.IsNullOrEmpty(EndNum.Text.Trim()))
                {
                    endNumber = int.Parse(EndNum.Text.Trim());
                }
                List<View_InvoiceTransferLog> list = _control.GetTransferLogByCondition(startDate, endDate, startNumber, endNumber,InvoiceLogTypeEnum);
                gd.DataSource = list;
                gd.DataBind();
            }

    简单实用的一种动态查询方法,就这么几句即可实现.本文属本人原创,转载请注明出处.代码开源.

  • 相关阅读:
    基于jQuery的鼠标悬停时放大图片的效果制作
    让document.write的广告无阻塞的加载
    浅谈DOM事件的优化
    前端自动化构建和发布系统的设计
    parseQueryString
    元素缩放
    apply用法
    3D旋转
    CSS居中的多种方法
    System Center Configuration Manager 2016 域准备篇(Part2)
  • 原文地址:https://www.cnblogs.com/mahong/p/1289556.html
Copyright © 2020-2023  润新知