/// <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; } }
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))); }