动态拼接LINQ 查询条件

本文章转载:http://www.cnblogs.com/wangiqngpei557/archive/2013/02/05/2893096.html

参考:http://dotnet.9sssd.com/entfwk/art/960

http://www.cnblogs.com/killuakun/archive/2008/08/03/1259389.html

http://www.cnblogs.com/snowdream/archive/2008/07/18/1246308.html

以往我们都是通过判断的方式来拼接查询的SQL字符串,但是现在我们面对是强类型的LINQ查询,是否可以很方便的进行类似查询。

eg:

string _UserID = string.Empty;

           _UserID = "E351D301-F64B-412C-B9EF-573F41235AF2";

           string _UserName = string.Empty;

           _UserName = "admin";

           string _employyName = string.Empty;

           _employyName = "测试1";

           using (var xj = new XJGasBottles_testDataContext())

           {

               //Linq写法

               var usersLinq = from us in xj.Users

                               where (string.IsNullOrEmpty(_UserID) || us.UserID.ToString() == _UserID)

                                      && (string.IsNullOrEmpty(_UserName) || us.UserName == _UserName)

                                      || (us.EmpName == _employyName)

                               //where string.IsNullOrEmpty(_UserID) || us.UserID.ToString()==_UserID

                               //where string.IsNullOrEmpty(_UserName) || us.UserName==_UserName

                               select us;

               foreach (var item in usersLinq)

               {

                   Console.WriteLine("Linq:");

                   Console.WriteLine(item.UserID + "_" + item.UserName);

               }

               //Lamda写法

               var usersLamda = xj.Users.Where(s => (string.IsNullOrEmpty(_UserID) || s.UserID.ToString() == _UserID) &&

                                               (string.IsNullOrEmpty(_UserName) || s.UserName == _UserName) ||

                                               (s.EmpName==_employyName)

                                         )

                                   .Select(s => s);

               foreach (var item in usersLamda)

               {

                   Console.WriteLine("Lamda:");

                   Console.WriteLine(item.UserID + "_" + item.UserName);

               }

           }

时间: 2024-11-03 21:47:40

动态拼接LINQ 查询条件的相关文章

参数化拼接in查询条件,个人备份

/// <summary>        /// 查询数据报表        /// </summary>        /// <param name="TrueOutTimeTo">日期范围尾</param>        /// <param name="anslyse">分析角度</param>        /// <param name="model">

JDBC中,如何动态的设置查询条件

今天看JDBC,发现有段代码,可以减少重复的编写查询方法,如下: 1 public List<Goddess> query(List<Map<String, Object>> params) throws Exception{ 2 List<Goddess> result=new ArrayList<Goddess>(); 3 4 Connection conn=DBUtil.getConnection(); 5 StringBuilder sb

根据条件动态拼接LinQ的where条件字串

var items1 = from c in customer where c.Id != null && (1 == 1 ? c.FirstName == "AAA" : true) && (1 == 1 ? c.LastName == "BBB" : true) select c; List<Customer> qwe11 = items1.ToList(); 如果条件不多,可以直接这样写. 也可以用Lambda: v

分享动态拼接Expression表达式组件及原理

前言 LINQ大家都知道,用起来也还不错,但有一个问题,当你用Linq进行搜索的时候,你是这样写的 var query = from user in db.Set<User>()                         where user.Username == "xxxx"                         select user; OK,看起来很好,不过····如果你要进行动态搜索的话··呵呵!其实方法还是挺多,只不过绕大弯 动态搜索是什么?顺便

LINQ to SQL 运行时动态构建查询条件

在进行数据查询时,经常碰到需要动态构建查询条件.使用LINQ实现这个需求可能会比以前拼接SQL语句更麻烦一些.本文介绍了3种运行时动态构建查询条件的方法. 本文中的例子最终实现的都是同一个功能,从Northwind数据库Customers表中搜索出CompanyName列带有keywords中任意元素的项.keywords是个字符串数组,该数组长度在编译时是不确定的.思路及方法说明写在代码注释中. 1.表达式树 1   public static IEnumerable<Customers> 

用PredicateBuilder实现Linq动态拼接查询

在使用Linq查询的时候,特别是如果你在使用Entiry Framwork,有时会遇到动态查询的情况(客户的查询条件是不固定的拼接查询).我们能想到的第一方案应该是拼接SQL,的确这样是可以达到我们的目的的.但这样又会破坏程序的一至性,本来使用Entiry Framwork的目标就是用面向对象的方式操纵数据库,这样我们又要开始写SQL语句了. 其实我一开始也是这样做的直到有一天我们部门的美女程序员给我介绍LinqKit,我才开始用PredicateBuilder来拼接Predicate委托. P

linq之InnerJoin和LeftJoin以及封装动态查询条件版本

Linq的出现,使数据集的处理显得愈来愈简便.很多时候对于本地数据集的处理,脑海中的第一反应,即尝试使用Linq来实现.诸如DataTable的innerJoin以及leftJoin等操作,很多时候我们一接到类似的需求,立马便动手,诸如以下demo: 一.InnerJoin 1 var qMyMx = from mxDr in _dtJgTcDetail.Rows.Cast<DataRow>().Where(drMx => id.Equals(drMx["TCID"]

两个表联合时,hql动态拼接,需要后置查询条件的解决办法

两表联合后,需要添加多个查询条件的解决方案 一. 这是我第一次在项目组做融资租赁时遇到的问题,代码如下: public ComposedBean OverdueReminder(Map param) throws CommonException{ ComposedBean composedBean = new ComposedBean(); StringBuffer sql = new StringBuffer(); sql.append(" select * from (") //0

使用Expression Tree构建动态LINQ查询

这篇文章介绍一个有意思的话题,也是经常被人问到的:如何构建动态LINQ查询?所谓动态,主要的意思在于查询的条件可以随机组合,动态添加,而不是固定的写法.这个在很多系统开发过程中是非常有用的. 我这里给的一个解决方案是采用Expression Tree来构建. 其实这个技术很早就有,在.NET Framework 3.5开始引入.之前也有不少同学写过很多不错的理论性文章.我自己当年学习这个,觉得最好的几篇文章是由"装配脑袋"同学写的.[有时间请仔细阅读这些入门指南,做点练习基本就能理解]