I have a recursive statement that removesactivities
that don't have a resource type
for a certain OrganizationID
. I was wondering if there was a better way to do this where I can eliminate some of the for loops
and use a little more linq
private IEnumerable<SubProjectDto> GetProjectAndActivitiesForByOrg(IEnumerable<SubProjectDto> children, Guid? organiazaitonId)
{
var subProjects = new List<SubProjectDto>();
subProjects.AddRange(children);
for (var i = 0; i < subProjects.Count; i++)
{
var activities = new List<ActivityDto>();
activities.AddRange(subProjects[i].Activities);
for (var j = 0; j < activities.Count; j++)
{
var resourceTypesForOrgs = activities[j].ActivityPersons.Where(x => x.ResourceType.OrganizationId == organiazaitonId).Count();
if (resourceTypesForOrgs == 0)
activities.Remove(activities[j]);
}
subProjects[i].Activities = activities;
if (subProjects[i].Children.Any())
GetProjectAndActivitiesForByOrg(subProjects[i].Children, organiazaitonId);
}
children = subProjects;
return children;
}