/// <summary>
        /// 基本的ToLookup方法
        /// </summary>
        /// <typeparam name="TKey">分组的键</typeparam>
        /// <typeparam name="TSource">数据源中的每一个实体</typeparam>
        /// <typeparam name="TElement">筛选后的数据</typeparam>
        /// <param name="source">数据源</param>
        /// <param name="keyselector">选择分组键的方法</param>
        /// <param name="elementselector">筛选要选取的数据</param>
        /// <param name="comparer">用户定义的比较器</param>
        /// <returns></returns>
        public static 系统内置接口.ILookup <TKey, TElement> ToLookup <TKey, TSource, TElement>(this IEnumerable <TSource> source, 内置委托.Func <TSource, TKey> keyselector, 内置委托.Func <TSource, TElement> elementselector, 系统内置接口.IEqualityComparer <TKey> comparer)
        {
            MyLookup <TKey, TElement> lookup = new MyLookup <TKey, TElement>(comparer);

            lookup.Create(source, keyselector, elementselector);
            return(lookup);
        }
        public static 系统内置接口.ILookup <TKey, TSource> ToLookup <TKey, TSource>(this IEnumerable <TSource> source, 内置委托.Func <TSource, TKey> keyselector, 系统内置接口.IEqualityComparer <TKey> comparer)
        {
            MyLookup <TKey, TSource> lookup = new MyLookup <TKey, TSource>(comparer);

            lookup.Create(source, keyselector, 数据结构.IdentityFunction <TSource> .Instance);
            return(lookup);
        }
        public static 数据结构.IEnumerable <系统内置接口.IGrouping <TKey, TSource> > GroupBy <TSource, TKey>(this IEnumerable <TSource> source, 内置委托.Func <TSource, TKey> keyselector, 内置委托.Func <TSource, TSource> elementselector, 系统内置接口.IEqualityComparer <TKey> comparer)
        {
            MyLookup <TKey, TSource> lookup = new MyLookup <TKey, TSource>(comparer);

            lookup.Create(source, keyselector, elementselector);
            return(lookup.GetPerGroup());
        }
        public static System.Collections.Generic.IEnumerable <TResult> GroupBy <TSource, TKey, TResult>(this IEnumerable <TSource> source, 内置委托.Func <TSource, TKey> keyselector, Func <TKey, System.Collections.Generic.IEnumerable <TSource>, TResult> resultselector)
        {
            MyLookup <TKey, TSource> lookup = new MyLookup <TKey, TSource>(null);

            lookup.Create(source, keyselector, IdentityFunction <TSource> .Instance);
            return(lookup.StaticResult(resultselector));
        }
        public static 数据结构.IEnumerable <系统内置接口.IGrouping <TKey, TSource> > GroupBy <TSource, TKey>(this IEnumerable <TSource> source, 内置委托.Func <TSource, TKey> keyselector)
        {
            MyLookup <TKey, TSource> lookup = new MyLookup <TKey, TSource>(null);

            lookup.Create(source, keyselector, IdentityFunction <TSource> .Instance);
            return(lookup.GetPerGroup());
        }