private void ReorderTransitStates() { // Where the list contains 1, 2, 3 and 2 is removed, the positions should reorder to 1, 2. var orderedStates = TransitStates.OrderBy(ts => ts.OrdinalPosition).ToList(); for (int i = 0; i < orderedStates.Count; i++) { orderedStates[i].OrdinalPosition = i + 1; } TransitStates = orderedStates; }