代码如下 | 复制代码 |
usingSystem; usingSystem.Linq.Expressions;
classDynamicPredicate { publicstaticExpression { ParameterExpression x = Expression.Parameter(typeof(T),"x"); ParameterExpression y = Expression.Parameter(typeof(T),"y"); returnExpression.Lambda ( (op.Equals(">")) ? Expression.GreaterThan(x, y) : (op.Equals("<")) ? Expression.LessThan(x, y) : (op.Equals(">=")) ? Expression.GreaterThanOrEqual(x, y) : (op.Equals("<= stringop=""">="; var integerPredicate = DynamicPredicate.Generate var floatPredicate = DynamicPredicate.Generate
intiA = 12, iB = 4; Console.WriteLine("{0} {1} {2} : {3}", iA, op, iB, integerPredicate(iA, iB));
floatfA = 867.0f, fB = 867.0f; Console.WriteLine("{0} {1} {2} : {3}", fA, op, fB, floatPredicate(fA, fB));
Console.WriteLine("{0} {1} {2} : {3}", fA,">", fB, DynamicPredicate.Generate
Console.ReadLine(); } |