zoukankan      html  css  js  c++  java
  • LINQ的Expression与delegate表达式

    Linq的delegate表达式,Insus.NET觉得它封装得好,让开发时简化了很多代码,而且容易阅读与检索。

    比如,我们需要计算优惠给客户金额,打85%折,可以这样写:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Linq.Expressions;
    
    namespace Insus.NET.Utilities
    {
        public class Class2
        {
            public decimal Preferential(decimal amount)
            {
                return amount * (1 - 0.85m);  //amount - amount * 0.85m;
            }
        }
    }
    Source Code

    应用方法:

     

    下面我们使用delegate委托来实现:


    运行结果:

    接下来,Insus.NET还想使用一个表达式树的类型Expression<TDelegate>实现:

    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Linq.Expressions;
    
    namespace Insus.NET.Utilities
    {
        public delegate decimal pref(decimal amount);
    
        public class Class2
        {
            //public decimal Preferential(decimal amount)
            //{
            //    return amount * (1 - 0.85m);  //amount - amount * 0.85m;
            //}
    
            // public pref Preferential11 = a => (a * (1 - 0.85m));
    
            static Expression<pref> expr = amount => (amount - amount * 0.85m);
    
            public pref Preferential2 = expr.Compile();
    
        }
    }
    Source Code

    方法引用运行结果:

  • 相关阅读:
    Spring 整合Hibernate与Struts2
    Spring @注解详解(转)
    Spring 事务
    Spring c3p0支持Hibernate配置
    Spring c3p0连接池配置
    Spring dbcp连接池配置与示例(以及JDBCTemplate的使用)
    struts转换器详解
    struts拦截器详解
    struts拦截器的使用
    OGNL表达式详解
  • 原文地址:https://www.cnblogs.com/insus/p/5441374.html
Copyright © 2011-2022 走看看