zoukankan      html  css  js  c++  java
  • 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();
            }

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

  • 相关阅读:
    maven公共库
    java截取当前屏幕图片
    JAVE视频处理
    jar在maven仓库里面没有时 , 把jar导入本地仓库步骤
    3 .shell 之linux四剑客sed/grep/awk/find
    Spring学习(四)-基于注解的Bean管理
    Spring学习(三)-Bean的种类,作用域,生命周期
    Spring学习(一)-基本入门
    dubbo服务连接zookeeper报错:java.net.ConnectException: Connection refused
    idea-常用设置二
  • 原文地址:https://www.cnblogs.com/mahong/p/1289556.html
Copyright © 2011-2022 走看看