浅谈c#表达式树Expression简单类型比较demo

 更新时间:2017年02月15日 11:25:58   投稿:jingxian  
下面小编就为大家带来一篇浅谈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#如何实现图片的剪裁并保存

    C#如何实现图片的剪裁并保存

    基于c#实现图片的裁剪并保存功能,实现方法非常简单的,前端采用的cropper插件,但是在本文中没有给大家多介绍,需要的朋友可以到脚本之家去查找这个插件。好了,如果大家对c#实现图片裁剪并保存功能感兴趣的朋友一起看看吧
    2016-11-11
  • C#实现插入排序算法实例

    C#实现插入排序算法实例

    这篇文章主要介绍了C#实现插入排序算法,实例分析了插入排序算法的原理与实现技巧,需要的朋友可以参考下
    2015-05-05
  • C#后台调用前台JS函数方法

    C#后台调用前台JS函数方法

    今天小编就为大家分享一篇关于C#后台调用前台JS函数方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • C#二进制读写BinaryReader、BinaryWriter、BinaryFormatter

    C#二进制读写BinaryReader、BinaryWriter、BinaryFormatter

    这篇文章介绍了C#二进制读写BinaryReader、BinaryWriter、BinaryFormatter的用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • C#实现只运行单个实例应用程序的方法(使用VB.Net的IsSingleInstance)

    C#实现只运行单个实例应用程序的方法(使用VB.Net的IsSingleInstance)

    这篇文章主要介绍了C#实现只运行单个实例应用程序的方法,本文使用的是VB.Net的IsSingleInstance方法实现,优于Mutex 和 Process 这两种只运行单个应用程序实例的方法,需要的朋友可以参考下
    2014-07-07
  • c# WPF中CheckBox样式的使用总结

    c# WPF中CheckBox样式的使用总结

    这篇文章主要介绍了c# WPF中CheckBox样式的使用总结,帮助大家更好的理解和学习使用c#,感兴趣的朋友可以了解下
    2021-03-03
  • C#判断三角形的类型

    C#判断三角形的类型

    这篇文章主要介绍了C#判断三角形的类型的方法,通过输入三角形的三条边长,判断是否能构成一个三角形,感兴趣的小伙伴们可以参考一下
    2015-11-11
  • C#串口通信总是丢数据的原因及解决方案

    C#串口通信总是丢数据的原因及解决方案

    在上位机开发中,串口通信是一个非常常见的通信方式,尤其是在与嵌入式设备、PLC、传感器等硬件设备进行交互时,串口通信简单、直接且广泛应用,但它也有自己的局限性,那么,为什么你的C#串口通信总是丢数据?本文将深度分析串口通信丢数据的原因,并提供一些有效的解决方案
    2025-02-02
  • c#目录操作示例(获取目录名称 获取子目录)

    c#目录操作示例(获取目录名称 获取子目录)

    这篇文章主要介绍了c#目录操作示例,包括获取目录名称、获取子目录、查询子目录、将原目录移动到目标目录等操作,大家参考使用吧
    2014-01-01
  • C#实现温度转换功能

    C#实现温度转换功能

    这篇文章主要为大家详细介绍了C#实现温度转换功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01

最新评论