Просьба вникнуть в код и найти потенциальные ошибки в каждом случае
3.5
private void Collect(IService sr, ObjectCategories protection)
{
sr.WorkingSegments.Cast<ServiceSegment>()
.Concat(sr.ProtectionSegments.Cast<ServiceSegment>())
.SelectMany(s => s.SegmentParcels.Cast<SegmentParcel>())
.Select(p => p.NetworkConnection)
.Where(nc => (nc != null))
.Execute(nc => Collect(nc, protection));
}
2.0
private void Collect(IService sr, ObjectCategories protection)
{
List<ServiceSegment> segments = new List<ServiceSegment>();
foreach (ServiceSegment item in sr.WorkingSegments)
segments.Add(item);
foreach (ServiceSegment item in sr.ProtectionSegments)
segments.Add(item);
foreach (ServiceSegment segment in segments)
{
foreach (SegmentParcel parcel in segment.SegmentParcels)
{
if (parcel.NetworkConnection == null)
continue;
Collect(parcel.NetworkConnection, protection);
}
}
}