/// <summary>
        /// 逆向排序操作
        /// </summary>
        /// <typeparam name="TSource"></typeparam>
        /// <typeparam name="TKey"></typeparam>
        /// <param name="source"></param>
        /// <param name="keySelector"></param>
        /// <returns></returns>
        public static LinqDLR2Sql <TSource> OrderByDescending <TSource, TKey>(this LinqDLR2Sql <TSource> source, Func <TSource, TKey> keySelector)
        {
            var key = keySelector.Invoke(source.Item);

            source.DoOrderByDescending(key);
            return(source);
        }
        /// <summary>
        /// 逆向排序操作
        /// </summary>
        /// <typeparam name="TSource"></typeparam>
        /// <typeparam name="TKey"></typeparam>
        /// <param name="source"></param>
        /// <param name="keySelector"></param>
        /// <returns></returns>
        public static LinqDLR2Sql <TSource> ThenByDescending <TSource, TKey>(this LinqDLR2Sql <TSource> source, Func <TSource, TKey> keySelector)
        {
            var ss = (from t in new List <object>()
                      group t by t.GetType() into g
                      select g
                      );
            var key = keySelector.Invoke(source.Item);

            source.DoOrderByDescending(key);
            return(source);
        }