zoukankan      html  css  js  c++  java
  • 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();        
  • 相关阅读:
    JavaScript总结
    Python-模块
    在VMware软件下创建CentOs虚拟机
    python 日常一记 基础
    python request 基于unittest 请求deom
    python 日常已记 列表去重
    电话拨号器
    Axure RP使用攻略--入门级(二)线框图元件
    Axure RP使用攻略--入门级(一)
    ArcGIS Server-发布地理编码服务
  • 原文地址:https://www.cnblogs.com/manyiString/p/6802448.html
Copyright © 2011-2022 走看看