// OLD STYLE: public static void ClearSegments(IChannel branch) { IList<BranchSegment> segments = branch.HydroNetwork.BranchSegments; IList<BranchSegmentBoundary> segmentBoundaries = branch.HydroNetwork.BranchSegmentBoundaries; IList<BranchSegmentCenter> segmentCenters = branch.HydroNetwork.BranchSegmentCenters; // First remove the existing segments var toBeRemoved = new List<BranchSegment>(); foreach (BranchSegment branchSegment in branch.BranchSegments) { // update the branch features that are linked to this branch toBeRemoved.Add(branchSegment); } foreach (BranchSegment branchSegment in toBeRemoved) { segments.Remove(branchSegment); segmentBoundaries.Remove(branchSegment.BranchSegmentBoundaryStart); segmentCenters.Remove(branchSegment.BranchSegmentCenter); } if (toBeRemoved.Count > 0) { segmentBoundaries.Remove(toBeRemoved[toBeRemoved.Count - 1].BranchSegmentBoundaryEnd); } branch.BranchSegments.Clear(); } // NEW STYLE: public static void ClearSegments(IChannel branch) { branch.BranchSegments.Clear(); branch.BranchSegmentBoundaries.Clear(); branch.BranchSegmentCenters.Clear(); }
A bit easier