实例如下:
using System;
using System.Linq.expressions;
class DynamicPredicate
{
public static expression> Generate(string op)
{
Parameterexpression x = expression.Parameter(typeof(T), "x");
Parameterexpression y = expression.Parameter(typeof(T), "y");
return expression.Lambda>
(
(op.Equals(">")) ? expression.GreaterThan(x, y) :
(op.Equals("<")) ? expression.LessThan(x, y) :
(op.Equals(">=")) ? expression.GreaterThanOrEqual(x, y) :
(op.Equals("<=")) ? expression.LessThanOrEqual(x, y) :
(op.Equals("!=")) ? expression.NotEqual(x, y) :
expression.Equal(x, y),
x,
y
);
}
}
static void Main()
{
string op = ">=";
var integerPredicate = DynamicPredicate.Generate(op).Compile();
var floatPredicate = DynamicPredicate.Generate(op).Compile();
int iA = 12, iB = 4;
Console.WriteLine("{0} {1} {2} : {3}",
iA, op, iB, integerPredicate(iA, iB));
float fA = 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(">").Compile()(fA, fB));
Console.ReadLine();
}
以上这篇浅谈c#表达式树expression简单类型比较demo就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持考高分网。



