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


时间: 2025-01-01 08:13:01

linq to sql的多条件动态查询(上)的相关文章

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

借助老外写的一个扩展表达式的类,可以把上篇中的代码写得更优雅 这是PredicateBuilder的源文件  public static class PredicateBuilder    ...{      public static Expression<Func<T, bool>> True<T> ()  ...{ return f => true;  }      public static Expression<Func<T, bool>

LINQ to SQL语句(23)之动态查询

动态查询 有这样一个场景:应用程序可能会提供一个用户界面,用 户可以使用该用户界面指定一个或多个谓词来筛选数据.这种情况在编译时不知 道查询的细节,动态查询将十分有用. 在LINQ中,Lambda表达式是许多 标准查询运算符的基础,编译器创建lambda表达式以捕获基础查询方法(例如 Where.Select.Order By.Take While 以及其他方法)中定义的计算.表达式 目录树用于针对数据源的结构化查询,这些数据源实现IQueryable<T>. 例如,LINQ to SQL 提

ASP的多条件动态查询

动态|条件 当用ASP与SQL Server数据库打交道时,查询语句是必不可少的.SQL Server数据库本身提供了丰富的查询语句,但是如何在ASP中实现对SQL Server数据库的多条件动态查询呢?笔者在用ASP开发一个基于SQL Server的网站时,较好地解决了这一问题,本文介绍其中的实现方法. 数据库的定义 在SQL Server中定义一个数据库,名称为"comm_server".在该数据库中定义一个表,表名为"operator",包含如下表所示字段 (

用非动态SQL Server SQL语句来对动态查询进行执行

此文章主要向大家讲述的是非动态SQL ServerSQL语句执行动态查询,在实际操作中我尝试在一个存储过程中,来进行传递一系列以逗号划定界限的值,来对结果集进行限制.但是无论什么时候,我在IN子句中使用变量,都会得到错误信息. 是否存在一种不执行动态SQL语句也能完成查询的方式呢? 我尝试在一个存储过程中传递一系列以逗号划定界限的值,以限制结果集.但是无论什么时候,我在IN子句中使用变量,都会得到错误信息.是否存在一种不执行动态SQL ServerSQL语句也能完成查询的方式呢? 专家解答: 这

通过非动态SQL语句在SQL Server中执行动态查询

问题: 我尝试在一个存储过程中传递一系列以逗号划定界限的值,以限制结果集.但是无论什么时候,我在 IN子句中使用变量,都会得到错误信息.是否存在一种不执行动态SQL语句也能完成查询的方式呢? 专家解答: 这里存在一种不执行动态SQL语句也能完成查询的方式,但是首先让我们来探究这个问题.我将在以下 例子中运用AdventureWorks数据库. 在你只有一个值的时候,执行将不会有什么问题. Declare @ManagerIDs Varchar(100) Set @ManagerIDs = '3'

LINQ那些事儿(5)- 动态查询

所谓动态查询,是指查询条件或查询值都是在运行时才能确定的查询.这就意味着我们不能hard-code定义查询变量(query variable),只有根据查询时传递的条件来拼凑.下面我们看看几组不同条件组合的查询. 1) 用户输入查询条件:City为"London"且ContactName包含"Thomas" 01 public IQueryable<Customer> GetCustomers(string city, string contactNam

学Linq to sql(四):查询句法

select 描述:查询顾客的公司名.地址信息 查询句法: var 构建匿名类型1 = from c in ctx.Customers select new { 公司名 = c.CompanyName, 地址 = c.Address }; 对应SQL: SELECT [t0].[CompanyName], [t0].[Address] FROM [dbo].[Customers] AS [t0] 描述:查询职员的姓名和雇用年份 查询句法: var 构建匿名类型2 = from emp in ct

linq to sql 多个DataContext连接查询?

问题描述 如何实现两个DataContext的连接查询?如vardc1=newPersonDataContext();vardc2=newChildrenDataContext();varquery=fromaindc1joinbindc2ona.id=b.pidselectb 解决方案 解决方案二:它们的连接字符串相同解决方案三:同一次查询为何要用两个连接字符串相同的DataContext?你的设计目的是什么>?解决方案四:项目经理这么弄的,目的是用多个DataContext代理不同的业务模块

LINQ to SQL异步查询

异步操作是提高Web应用程序吞吐量的重要手段,关于这方面的话题已经在前 文<正确使用异步操作>中解释过了.对于大多数互联网应用来说,性能瓶颈数 据库访问.换句话说,一个请求在数据库操作上所花的时间往往是最多的 --并且占总时间的90%以上.因此,当Web应用程序的吞吐量因为数 据库操作的阻塞而受到影响的话,我们可是尝试使用异步数据库操作来进行优化 . 如果我们使用LINQ to SQL,在默认情况下是无法实现异步查询的,所 有的操作都非常自然--异步是不自然的,因为它把连续的操作拆成 了两段.