public static IEnumerable Distinct(IEnumerable items, IInvoker param, IComparer comparer = null) { var oldValue = (object)null; var list = items.Cast <object>().ToList(); ListHelper.QuickSort(list, comparer ?? ((IInvokerExtension)param).CreateComparer(param.TargetType, ListSortDirection.Descending)); foreach (var item in list) { var newValue = param.GetValue(item); if (!Equal(newValue, oldValue)) { oldValue = newValue; if (newValue != null) { yield return(item); } } } }
public void Sort(IComparer <T> comp) { ListHelper.QuickSort <T>(items, comp); }
public void SortInternal() { ListHelper.QuickSort <T>(items, comparer); }
public virtual void ApplySortInternal(IComparer <T> comparer) { this.comparer = comparer; ListHelper.QuickSort <T>(items, this.comparer); //_items.Sort(comparer); }