Ejemplo n.º 1
0
        private IChangeSet <T> Reset(ChangeAwareList <T> original, ChangeAwareList <T> target)
        {
            var sorted = original.OrderBy(t => t, _comparer).ToList();

            target.Clear();
            target.AddRange(sorted);
            return(target.CaptureChanges());
        }
Ejemplo n.º 2
0
        private IChangeSet <T> ChangeComparer(ChangeAwareList <T> target, IComparer <T> comparer)
        {
            _comparer = comparer;
            var sorted = target.OrderBy(t => t, _comparer).ToList();

            target.Clear();
            target.AddRange(sorted);
            return(target.CaptureChanges());
        }
Ejemplo n.º 3
0
        private IChangeSet <T> Reorder(ChangeAwareList <T> target)
        {
            int index  = -1;
            var sorted = target.OrderBy(t => t, _comparer).ToList();

            foreach (var item in sorted)
            {
                index++;

                var existing = target[index];
                //if item is in the same place,
                if (ReferenceEquals(item, existing))
                {
                    continue;
                }

                //Cannot use binary search as Resort is implicit of a mutable change
                var old = target.IndexOf(item);
                target.Move(old, index);
            }

            return(target.CaptureChanges());
        }