public Dictionary <IndicatorContainerType, Dictionary <IndicatorLabelContentCategory, List <IndicatorRepContainer> > > IndicatorReportCore( IQueryable <Project> prjList, FinReportFilter frepf, List <String> Area, List <String> gtype, List <String> compete, List <String> status, List <String> oblast, List <String> period, List <String> amount, List <String> indicatorcategory) { AppDropDownsService ServiceDDL = new AppDropDownsService(); List <IndicatorLabelContentCategory> IndContCats = new List <IndicatorLabelContentCategory>(); var regions = new List <RegionList>(); var areas = new List <ProgramAreaList>(); var statusList = new List <ProposalStatusList>(); var gtypeList = new List <GrantTypeList>(); var competeList = new List <CompetitionCodeList>(); //create IndicatorContentCategory List to be passed. if (indicatorcategory != null) { foreach (string s in indicatorcategory) { IndContCats.Add(ServiceDDL.GetIndicatorLabelContentCategory(Convert.ToInt32(s))); } } var LLVsContainer = new Dictionary <IndicatorContainerType, Dictionary <IndicatorLabelContentCategory, List <IndicatorRepContainer> > >(); // Dictionary<ContainerType, List<VsContainer>> LLVsContainer = null; if (oblast != null && oblast.Count > 0 && indicatorcategory != null && indicatorcategory.Count > 0) { //create RegionsList List to be passed. foreach (string s in oblast) { if (!s.Contains("All")) //skip ALL. { regions.Add(ServiceDDL.GetRegionList().FirstOrDefault(w => w.DDID == Convert.ToInt32(s))); } } var result = FillContainer(prjList, frepf, IndicatorContainerType.OblastVsIndicatorLabelCategory, IndContCats, regions, null, null, null); LLVsContainer.Add(IndicatorContainerType.OblastVsIndicatorLabelCategory, result); } if (Area != null && Area.Count > 0 && indicatorcategory != null && indicatorcategory.Count > 0) { foreach (string s in Area) { if (!s.Contains("All")) //skip ALL. { areas.Add(ServiceDDL.GetProgramAreaList().FirstOrDefault(w => w.ProgramAreaCodeID == Convert.ToInt32(s))); } } var result = FillContainer(prjList, frepf, IndicatorContainerType.AreaVsIndicatorLabelCategory, IndContCats, null, areas, null, null); LLVsContainer.Add(IndicatorContainerType.AreaVsIndicatorLabelCategory, result); } if (gtype != null && gtype.Count > 0 && indicatorcategory != null && indicatorcategory.Count > 0) { foreach (string s in gtype) { if (!s.Contains("All")) //skip ALL. { gtypeList.Add(ServiceDDL.GetGrantTypeList().FirstOrDefault(w => w.GrantTypeCodeID == Convert.ToInt32(s))); } } var result = FillContainer(prjList, frepf, IndicatorContainerType.TypeVsIndicatorLabelCategory, IndContCats, null, null, gtypeList, null); LLVsContainer.Add(IndicatorContainerType.TypeVsIndicatorLabelCategory, result); } if (compete != null && compete.Count > 0 && indicatorcategory != null && indicatorcategory.Count > 0) { foreach (string s in compete) { if (!s.Contains("All")) //skip ALL. { competeList.Add(ServiceDDL.GetCompetitionCodeList().FirstOrDefault(w => w.CompetitionCodeID == Convert.ToInt32(s))); } } var result = FillContainer(prjList, frepf, IndicatorContainerType.RoundVsIndicatorLabelCategory, IndContCats, null, null, null, competeList); LLVsContainer.Add(IndicatorContainerType.RoundVsIndicatorLabelCategory, result); } bool areaVsRound = false; //more coming here. return(LLVsContainer); }