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

 

方法引用運行結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM