public void CheckFieldMove() { var comparer = new FieldDescriptor.MoveFieldComparer(); var moved = FieldsAdded.Intersect(FieldsRemoved, comparer).ToList(); foreach (var m in moved) { var fAdded = FieldsAdded.Single(x => comparer.Equals(x, m)); var fRemoved = FieldsRemoved.Single(x => comparer.Equals(x, m)); FieldsMoved.Add(fRemoved, fAdded); FieldsAdded.Remove(fAdded); FieldsRemoved.Remove(fRemoved); } }