public iOrgs GetAllImplementingOrg(FilterBDModel filterDBModel) { if (filterDBModel != null) { Sessions.filterBDModel.iatiActivities = filterDBModel.iatiActivities; UpdateActivities(filterDBModel.iatiActivities, Sessions.activitiesContainer.iatiActivities); } //actual method begins here var managingDPs = GetAllFundSources(); var iOrgs = new List<participatingorg>(); foreach (var activity in Sessions.activitiesContainer?.RelevantActivities) { if (activity.ImplementingOrgs != null) iOrgs.AddRange(activity.ImplementingOrgs); } var distictOrgs = iOrgs.DistinctBy(l => l.Name).OrderBy(o => o.Name); var exAgencies = aimsDAL.GetExecutingAgencies(); var returtResult = new iOrgs { Orgs = distictOrgs.ToList(), FundSources = managingDPs, ExecutingAgencyTypes = aimsDAL.GetExecutingAgencyTypes(), ExecutingAgencies = exAgencies }; Sessions.iOrgs = returtResult; foreach (var org in distictOrgs) { //check for matching managing DP from AIMS var managingDP = !string.IsNullOrWhiteSpace(org.@ref) ? managingDPs.FirstOrDefault(q => q.IATICode != null && q.IATICode.Contains(org.@ref)) : null; //Add selected value org.AllID = managingDP == null ? Sessions.DP.AllID : managingDP.AllID; GuessAgency(org, false); } Sessions.CurrentStage = Stage.FilterDP; return returtResult; }