예제 #1
0
        /// <summary>
        /// this method works for all data types; low efficiency
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="list"></param>
        /// <param name="cmp"></param>
        /// <returns></returns>
        public static bool AreAnyDuplicates <T>(this IEnumerable <T> Tself, IComparer <T> cmp = null)
        {
            cmp = CHelpFunc.SetOrDefaultCmp(cmp);
            var TSS = new SortedSet <T>(cmp);

            foreach (var item in Tself)
            {
                if (TSS.Add(item) == false)
                {
                    return(true);
                }
            }
            return(false);
        }
 public static void CompareAndOrder <T, TOrder>(T T1, T T2, Func <T, TOrder> orderFunc,
                                                out T minT, out T maxT, IComparer <TOrder> cmp = null)
 {
     cmp = CHelpFunc.SetOrDefaultCmp(cmp);
     if (cmp.Compare(orderFunc(T1), orderFunc(T2)) <= 0)
     {
         minT = T1;
         maxT = T2;
     }
     else
     {
         minT = T2;
         maxT = T1;
     }
 }
예제 #3
0
 public static int CmpGeneric <T, TOrder>(T T1, T T2, Func <T, TOrder> orderFunc,
                                          IComparer <TOrder> cmp = null)
 {
     cmp = CHelpFunc.SetOrDefaultCmp(cmp);
     return(cmp.Compare(orderFunc(T1), orderFunc(T2)));
 }