Auxiliary classes
1 usingSystem;2 usingSystem.Collections.Generic;3 usingSystem.Linq;4 usingSystem.Linq.Expressions;5 usingSystem.Text;6 usingSystem.Threading.Tasks;7 8 namespaceDrision.Framework.Logic.NYZF9 {Ten Public Static classPredicatebuilder One { A Public StaticExpression<func<t,BOOL>> true<t> () {returnf =true; } - Public StaticExpression<func<t,BOOL>> false<t> () {returnf =false; } - the Public StaticExpression<func<t,BOOL>> or<t> ( ThisExpression<func<t,BOOL>>Expr1, -Expression<func<t,BOOL>>expr2) - { - varinvokedexpr = Expression.invoke (Expr2, Expr1. Parameters.cast<expression>()); + returnExpression.lambda<func<t,BOOL>> - (Expression.or (expr1. Body, invokedexpr), Expr1. Parameters); + } A at Public StaticExpression<func<t,BOOL>> and<t> ( ThisExpression<func<t,BOOL>>Expr1, -Expression<func<t,BOOL>>expr2) - { - varinvokedexpr = Expression.invoke (Expr2, Expr1. Parameters.cast<expression>()); - returnExpression.lambda<func<t,BOOL>> - (Expression.and (expr1. Body, invokedexpr), Expr1. Parameters); in } - } to}
How to use
1 varpredicate = predicatebuilder.false<t_operator>();2 foreach(varNameinchtypenames)3 {4 stringTmpname =name;5predicate = predicate. Or (o = o.operatingrange! =NULL&&o.operatingrange.contains (Tmpname));6 }7Operators = operators. AsQueryable (). Where (predicate). ToList ();
LINQ to SQL Dynamic query