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

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

  • 相关阅读:
    jQuery1.3.2 源码学习 2 两个重要的正则表达式
    学习 jQuery 4 使用方法选择
    学习 jQuery 6 在 TreeView 中实现全选
    jQuery1.3.2 源码学习4 init 函数分析 2
    学习 jQuery 3 选择器
    学习 jQuery 5 筛选和过滤器
    条款9:在删除选项中仔细选择
    优化3D图形流水线
    指针相减
    浅谈水体的实现
  • 原文地址:https://www.cnblogs.com/mahong/p/1289556.html
Copyright © 2011-2022 走看看