下面小编就为大家带来一篇浅谈c#表达式树Expression简单类型比较demo。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
实例如下:
using System;
using System.Linq.Expressions;
class DynamicPredicate
{
public static Expression<Func<T, T, bool>> Generate<T>(string op)
{
ParameterExpression x = Expression.Parameter(typeof(T), "x");
ParameterExpression y = Expression.Parameter(typeof(T), "y");
return Expression.Lambda<Func<T, T, bool>>
(
(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<int>(op).Compile();
var floatPredicate = DynamicPredicate.Generate<float>(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<float>(">").Compile()(fA, fB));
Console.ReadLine();
}
以上这篇浅谈c#表达式树Expression简单类型比较demo就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程学习网。
沃梦达教程
本文标题为:浅谈c#表达式树Expression简单类型比较demo
猜你喜欢
- .NET CORE DI 依赖注入 2023-09-27
- C# 使用Aspose.Cells 导出Excel的步骤及问题记录 2023-05-16
- Unity3D实现渐变颜色效果 2023-01-16
- 在C# 8中如何使用默认接口方法详解 2023-03-29
- WPF使用DrawingContext实现绘制刻度条 2023-07-04
- Unity Shader实现模糊效果 2023-04-27
- c# 模拟线性回归的示例 2023-03-14
- 如何使用C# 捕获进程输出 2023-03-10
- Oracle中for循环的使用方法 2023-07-04
- user32.dll 函数说明小结 2022-12-26