linq to sql的多条件动态查询(上)

linq  to sql的多条件动态查询确实是一件头痛的事情,用表达式树或反射方法要写一大堆代码,有时候想想与其这么复杂,还不如回到手动sql拼接的年代,但是技术总是向前发展的,终归还是要在linq上解决这一问题,无意在网上发现一个还算比较简单的办法,分享一下:

void ShowData() 
    {
        using (DBDataContext db = new DBDataContext(Database.ConnectionString))
        {
            Expression<Func<T_Bargin, bool>> expr = n => GetCondition(n);
            var _query = db.T_Bargins.Where<T_Bargin>(expr.Compile()).Select(b => new { b.F_Money, b.F_Name });
            foreach (var item in _query)
            {
                Response.Write(item.F_Name + "&nbsp;" + item.F_Money.ToString() +  "<br/>");
            }
        }     
    }


    //得到合同金额大于6000,或合同名称中包含"江华"字的条件
    private bool GetCondition(T_Bargin _Table)
    {       

        bool _result = false;

        decimal _MinMoney = 6000;

        if (_MinMoney > 0)
        {
            _result |= _Table.F_Money >= _MinMoney;
        }

        string _Name = "江华";

        if (!String.IsNullOrEmpty(_Name))
        {
            _result |= _Table.F_Name.Contains(_Name);
        }
        
        return _result;
    }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏极客慕白的成长之路

通俗理解数据库范式

数据库范式是数据库设计中必不可少的知识,没有对范式的理解,就无法设计出高效率、优雅的数据库。甚至设计出错误的数据库。而想要理解并掌握范式却并不是那么容易。教科...

27320
来自专栏哲学驱动设计

重构实践:体验interface的威力(二)

前一篇博客 写了在这次重构中,如何找到关键的概念,并将它提取成为接口。这样,重构的方案基本上就已经被确定了。这篇博客主要说一些有意义的细节: 抽象实现 ...

20680
来自专栏存储

数据在内存中的存储

计算机要处理的信息是多种多样的,如数字、文字、符号、图形、音频、视频等,这些信息在人们的眼里是不同的。但对于计算机来说,它们在内存中都是一样的,都是以二进制的形...

20460
来自专栏牛客网

今日头条2018春招安卓面经

一面: 协变 线程间通信?有几种同步/加锁方式? 进程间通信?答了三个只知道概念的和安卓的AIDL。 又问这“三个”中任选一个阐述原理 hashCode()方法...

36960
来自专栏IT派

细思极恐-你真的会写java吗?

自2013年毕业后,今年已经是我工作的第4个年头了,总在做java相关的工作,终于有时间坐下来,写一篇关于java写法的一篇文章,来探讨一下如果你真的是一个ja...

19750
来自专栏HansBug's Lab

1022: [SHOI2008]小约翰的游戏John

1022: [SHOI2008]小约翰的游戏John Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 1322 ...

29540
来自专栏JAVA高级架构

七夕情人节,程序员怎样表白更有效?

七夕情人节快乐 2017.08.28 今天是传统节日--七夕节,也是中国人传统意义上的"情人节",在此祝大家开心。然后,各大平台又被七夕节刷屏了... 作为国...

1K60
来自专栏ACM算法日常

过山车(匈牙利算法)- HDU 2063

输入数据的第一行是三个整数K , M , N,分别表示可能的组合数目,女生的人数,男生的人数。0<K<=1000 1<=N 和M<=500.接下来的K行,每行有...

27110
来自专栏程序员的SOD蜜

抛砖引玉:使用二进制位操作,解决铁道部火车票的数据查询和存储问题,超轻量级的解决方案

    又到节假日,园子里面不少高人再次对12306网站的各种问题的各种分析和提出各种解决方案,我也看了这些讨论文章,出于也是一个买票难的“码农”,也来献计献言...

27150
来自专栏葡萄城控件技术团队

Visual Studio 2015速递(1)——C#6.0新特性怎么用

系列文章 Visual Studio 2015速递(1)——C#6.0新特性怎么用 Visual Studio 2015速递(2)——提升效率和质量(VS20...

20080

扫码关注云+社区

领取腾讯云代金券