当前位置: 首页 > 编程笔记 >

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

闽朝
2023-03-14
本文向大家介绍浅谈c#表达式树Expression简单类型比较demo,包括了浅谈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就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍简单谈谈python中的lambda表达式,包括了简单谈谈python中的lambda表达式的使用技巧和注意事项,需要的朋友参考一下 最近在coding时发现使用lambda还是有诸多优点的,很多时候代码更整洁,更pythonic,所以在此简单总结一下 1.lambda是什么 举个简单的例子: 两个func的定义是完全相同的,那两种函数定义方法配合map使用,将list中所有元素求平

  • 本文向大家介绍简单谈谈JS中的正则表达式,包括了简单谈谈JS中的正则表达式的使用技巧和注意事项,需要的朋友参考一下 1、正则表达式包括两部分 ①定义正则表达式的规则; ②正则表达式的模式(i/g/m); 2、声明正则表达式 ① 字面量声明: var reg = /表达式规则/表达式模式;   eg:var reg = /white/g; ② 使用new关键字: var reg = new RegE

  • 本文向大家介绍浅谈C#中正则表达式的使用,包括了浅谈C#中正则表达式的使用的使用技巧和注意事项,需要的朋友参考一下 目前为止,许多编程语言和工具都包含对正则表达式的支持,C#也不例外,C#基础类库中包含有一个命名空间(System.Text.RegularExpressions)和一系列可以充分发挥规则表达式威力的类(Regex、Match、Group等)。那么,什么是正则表达式,怎么定义正则表达

  • 本文向大家介绍简单谈谈C#中深拷贝、浅拷贝,包括了简单谈谈C#中深拷贝、浅拷贝的使用技巧和注意事项,需要的朋友参考一下 Object.MemberwiseClone 方法 创建当前 Object 的浅表副本。 MemberwiseClone 方法创建一个浅表副本,方法是创建一个新对象,然后将当前对象的非静态字段复制到该新对象。 如果字段是值类型的,则对该字段执行逐位复制。 如果字段是引用类型,则复

  • 报表表达式是JasperReports的强大功能,它允许我们在报表上显示计算数据。 计算数据是不是静态数据的数据,不会作为报表参数或数据源字段专门传递。 报表表达式是通过组合报表参数,字段和静态数据构建的。 Java语言默认用于编写报表表达式。 JasperReports编译器支持其他报表表达式的脚本语言,如Groovy脚本语言,JavaScript或BeanShell脚本。 本章将向您解释 -

  • 本文向大家介绍浅谈C#单例模式的实现和性能对比,包括了浅谈C#单例模式的实现和性能对比的使用技巧和注意事项,需要的朋友参考一下 简介 单例指的是只能存在一个实例的类(在C#中,更准确的说法是在每个AppDomain之中只能存在一个实例的类,它是软件工程中使用最多的几种模式之一。在第一个使用者创建了这个类的实例之后,其后需要使用这个类的就只能使用之前创建的实例,无法再创建一个新的实例。通常情况下,单