小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Linq表達(dá)式拓展類(Or條件,排除重復(fù)等)

 修行的嘟嘟 2014-10-27
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;

namespace OSS.ETS.OMS.Common
{
    /// <summary>
    /// 構(gòu)造函數(shù)使用True時(shí):?jiǎn)蝹€(gè)AND有效,多個(gè)AND有效;單個(gè)OR無(wú)效,多個(gè)OR無(wú)效;混合時(shí)寫(xiě)在AND后的OR有效
    /// 構(gòu)造函數(shù)使用False時(shí):?jiǎn)蝹€(gè)AND無(wú)效,多個(gè)AND無(wú)效;單個(gè)OR有效,多個(gè)OR有效;混合時(shí)寫(xiě)在OR后面的AND有效
    /// </summary>
    /// 創(chuàng)建者:王宇
    /// 創(chuàng)建日期:9/1/2014 10:38 AM
    /// 修改者:
    /// 修改時(shí)間:
    /// ------------------------------------
    public static class PredicateExtensions
    {
        public static Expression<Func<T, bool>> True<T>() { return f => true; }

        public static Expression<Func<T, bool>> False<T>() { return f => false; }

        /// <summary>
        /// lambda表達(dá)式Or
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="expression1">The expression1.</param>
        /// <param name="expression2">The expression2.</param>
        /// <returns></returns>
        /// 創(chuàng)建者:王宇
        /// 創(chuàng)建日期:9/1/2014 10:32 AM
        /// 修改者:
        /// 修改時(shí)間:
        /// ------------------------------------
        public static Expression<Func<T, bool>> Or<T>(this Expression<Func<T, bool>> expression1, Expression<Func<T, bool>> expression2)
        {
            var invokedExpression = Expression.Invoke(expression2, expression1.Parameters);

            return Expression.Lambda<Func<T, bool>>(Expression.Or(expression1.Body, invokedExpression), expression1.Parameters);
        }


        /// <summary>
        /// lambda表達(dá)式And
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="expression1">The expression1.</param>
        /// <param name="expression2">The expression2.</param>
        /// <returns></returns>
        /// 創(chuàng)建者:王宇
        /// 創(chuàng)建日期:9/1/2014 10:30 AM
        /// 修改者:
        /// 修改時(shí)間:
        /// ------------------------------------
        public static Expression<Func<T, bool>> And<T>(this Expression<Func<T, bool>> expression1, Expression<Func<T, bool>> expression2)
        {
            var invokedExpression = Expression.Invoke(expression2, expression1.Parameters);

            return Expression.Lambda<Func<T, bool>>(Expression.And(expression1.Body, invokedExpression), expression1.Parameters);
        }

        /// <summary>
        /// 排除重復(fù)數(shù)據(jù).
        /// </summary>
        /// <typeparam name="TSource"></typeparam>
        /// <typeparam name="TKey"></typeparam>
        /// <param name="source">集合.</param>
        /// <param name="keySelector">排重表達(dá)式.</param>
        /// <returns></returns>
        /// 創(chuàng)建者:王宇
        /// 創(chuàng)建日期:9/1/2014 10:28 AM
        /// 修改者:
        /// 修改時(shí)間:
        /// ------------------------------------
        public static IEnumerable<TSource> DistinctBy<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector)
        {
            var seenKeys = new HashSet<TKey>();
            return source.Where(element => seenKeys.Add(keySelector(element)));
        }
    }
}

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多