public List <MasterGroupMapping> GetListOfHighestProductGroupWithFlattenHierachy(List <MasterGroupMapping> listOfFlattenHierachyProductGroups) { List <MasterGroupMapping> listOfHighestFlattenHierachyProductGroups = new List <MasterGroupMapping>(); listOfHighestFlattenHierachyProductGroups.AddRange(listOfFlattenHierachyProductGroups); listOfFlattenHierachyProductGroups.ForEach(productGroup => { List <MasterGroupMapping> productGroupChildren = masterGroupMappingRepo.GetListOfMasterGroupMappingChildren(productGroup.MasterGroupMappingID); log.DebugFormat("Flatten Product Group {0}. Product Group {0} have {1} Sub Product Groups", productGroup.MasterGroupMappingID, productGroupChildren.Count); productGroupChildren.ForEach(productGroupChild => { listOfHighestFlattenHierachyProductGroups.RemoveAll(x => x.MasterGroupMappingID == productGroupChild.MasterGroupMappingID); }); }); return(listOfHighestFlattenHierachyProductGroups); }