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();
            }

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

  • 相关阅读:
    网页返回码大全
    求数组中子数组的最大和
    什么是面向对象?面向对象与面向过程的区别?
    Java内部类
    Java拆箱装箱
    linux中su和sudo区别
    Linux 中账户管理
    解决warn appiumdoctor bin directory for $java_home is not set
    Moco之include
    Mock server 之 Moco的使用
  • 原文地址:https://www.cnblogs.com/mahong/p/1289556.html
Copyright © 2011-2022 走看看