Linq to sql 动态查询

辅助类

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Linq.Expressions;
 5 using System.Text;
 6 using System.Threading.Tasks;
 7
 8 namespace Drision.Framework.Logic.NYZF
 9 {
10     public static class PredicateBuilder
11     {
12         public static Expression<Func<T, bool>> True<T>() { return f => true; }
13         public static Expression<Func<T, bool>> False<T>() { return f => false; }
14
15         public static Expression<Func<T, bool>> Or<T>(this Expression<Func<T, bool>> expr1,
16                                                             Expression<Func<T, bool>> expr2)
17         {
18             var invokedExpr = Expression.Invoke(expr2, expr1.Parameters.Cast<Expression>());
19             return Expression.Lambda<Func<T, bool>>
20                   (Expression.Or(expr1.Body, invokedExpr), expr1.Parameters);
21         }
22
23         public static Expression<Func<T, bool>> And<T>(this Expression<Func<T, bool>> expr1,
24                                                              Expression<Func<T, bool>> expr2)
25         {
26             var invokedExpr = Expression.Invoke(expr2, expr1.Parameters.Cast<Expression>());
27             return Expression.Lambda<Func<T, bool>>
28                   (Expression.And(expr1.Body, invokedExpr), expr1.Parameters);
29         }
30     }
31 }

使用方法

1                         var predicate = PredicateBuilder.False<T_Operator>();
2                         foreach (var name in typenames)
3                         {
4                             string tmpname = name;
5                             predicate = predicate.Or(o => o.OperatingRange != null && o.OperatingRange.Contains(tmpname));
6                         }
7                         operators = operators.AsQueryable().Where(predicate).ToList();        
时间: 2024-11-05 16:39:25

Linq to sql 动态查询的相关文章

Linq to Sql : 动态构造Expression进行动态查询

原文:Linq to Sql : 动态构造Expression进行动态查询 前一篇在介绍动态查询时,提到一个问题:如何根据用户的输入条件,动态构造这个过滤条件表达式呢?Expression<Func<ProductExt, bool>> predicate t => t.ProductName.Contains("che") && t.UnitPrice >= 22; 理想情况下,我希望可以像下面这样来构造predicate,这样,我

Sql动态查询拼接字符串的优化

Sql动态查询拼接字符串的优化 最原始的 直接写:string sql="select * from TestTables where 1=1";... 这样的代码效率很低的,这样影响了数据库的索引引用如下所示:private void TestOneMethod()        {             string querySql = "select * from TestTables where 1=1";            if (hasOneCo

LINQ系列:LINQ to SQL Select查询

using (NorthwindContext context = new NorthwindContext()) { var expr = context.Products; foreach (var item in expr) { Console.WriteLine(item.ProductName); } } SELECT [Extent1].[ProductID] AS [ProductID], [Extent1].[CategoryID] AS [CategoryID], [Exten

linq to sql 怎么查询前 11 条数据

(from 新表 in db.books where 新表.bookid < 400 select 新表).Take(11); storeDB.Albums.OrderByDescending(a => a.OrderDetails.Count()).Take(count).ToList();数据上下文.Albums数据表.倒序排序(条件为按照各数据关联的OrderDetails数据表中数据的条数).拿记录(count条).立即执行转为list

Linq to Sql:N层应用中的查询(上) : 返回自定义实体

原文:Linq to Sql:N层应用中的查询(上) : 返回自定义实体 如果允许在UI层直接访问Linq to Sql的DataContext,可以省去很多问题,譬如在处理多表join的时候,我们使用var来定义L2S查询,让IDE自动推断变量的具体类型(IQueryable<匿名类型>),并提供友好的智能提示:而且可以充分应用L2S的延迟加载特性,来进行动态查询.但如果我们希望将业务逻辑放在一个独立的层中(譬如封装在远程的WCF应用中),又希望在逻辑层应用Linq to sql,则情况就比

Linq to sql 的语法

Linq to SQL 语法查询(子查询 & in操作 & join ) 引用地址:http://www.cnblogs.com/82767136/articles/2949541.html 子查询 描述:查询订单数超过5的顾客信息 查询句法: var 子查询 = from c in ctx.Customers                    where                        (from o in ctx.Orders group o by o.Custome

Linq To Sql进阶系列(六)用object的动态查询与保存log篇

动态的生成sql语句,根据不同的条件构造不同的where字句,是拼接sql 字符串的好处.而Linq的推出,是为了弥补编程中的 Data != Object 的问题.我们又该如何实现用object的动态查询呢? 1,用object的查询是什么?我们可以简单的举这么一个例子.我们到公安局查找一个人.首先,我们会给出他的一些特征,比如,身高多少,年龄多少,性别,民族等.那么,我们把这个人的一些特征输入电脑.我们希望,电脑能给我们返回这个人的信息.而实际上,有相同特征的人太多了,常常返回一个集合.那让

LINQ体验(17)——LINQ to SQL语句之动态查询

高级特性 本文介绍LINQ的高级特性,其包括大家都关心的动态查询的用法,另外简单提下ID标识这个知识. 动态查询 有这样一个场景:应用程序可能会提供一个用户界面,用户可以使用该用户界面指定一个或多个谓词来筛选数据.这种情况在编译时不知道查询的细节,动态查询将十分有用. 在LINQ中,Lambda表达式是许多标准查询运算符的基础,编译器创建lambda表达式以捕获基础查询方法(例如 Where.Select.Order By.Take While 以及其他方法)中定义的计算.表达式目录树用于针对数

Linq to Sql:N层应用中的查询(下) : 根据条件进行动态查询

原文:Linq to Sql:N层应用中的查询(下) : 根据条件进行动态查询 如果允许在UI层直接访问Linq to Sql的DataContext,可以省去很多问题,譬如在处理多表join的时候,我们使用var来定义L2S查询,让编译器自动推断变量的具体类型(IQueryable<匿名类型>),并提供友好的智能提示:而且可以充分应用L2S的延迟加载特性,来进行动态查询.但如果我们希望将业务逻辑放在一个独立的层中(譬如封装在远程的WCF应用中),又希望在逻辑层应用Linq to sql,则情