Filter By Multiple Categories

Posted by Community Admin on 04-Aug-2018 16:20

Filter By Multiple Categories

All Replies

Posted by Community Admin on 01-Jun-2012 00:00

I'm developing a search control with a few checkbox lists of taxons. I'd like to be able to put the results of the checkbox lists into a list of Guids and then find module builder items that have matching taxons. I cannot figure out how to filter a taxon list within a module builder item with the list of taxon guids I have. Any help?

public void Submit(object sender, EventArgs e)
        
            List<Guid> CategoriesChecked = new List<Guid>();
            foreach (ListItem tag in MentorshipCategoriesList.Items)
                if (tag.Selected) CategoriesChecked.Add(new Guid(tag.Value));
 
            List<Guid> IndustriesChecked = new List<Guid>();
            foreach (ListItem tag in MentorshipIndustriesList.Items)
                if (tag.Selected) IndustriesChecked.Add(new Guid(tag.Value));
 
            List<Guid> BusinessStagesChecked = new List<Guid>();
            foreach (ListItem tag in MentorshipBusinessStagesList.Items)
                if (tag.Selected) BusinessStagesChecked.Add(new Guid(tag.Value));
 
            bool PreviousExperience = MentorshipExperience.Checked;
 
            FindMentors(CategoriesChecked, IndustriesChecked, BusinessStagesChecked, PreviousExperience);
        
 
        protected void FindMentors(List<Guid> CategoriesChecked, List<Guid> IndustriesChecked, List<Guid> BusinessStagesChecked, bool PreviousExperience)
        
            DynamicModuleManager dynamicModuleManager = DynamicModuleManager.GetManager();
            Type mentorType = TypeResolutionService.ResolveType("Telerik.Sitefinity.DynamicTypes.Model.Mentors.Mentor");
 
            var mentors = (dynamicModuleManager.GetDataItems(mentorType))
                .Where(i => i.GetValue<IList<Guid>>("mentorshipcategories").IM_LOST_HERE
                    && i.Visible == true);
        

Posted by Community Admin on 04-Jun-2012 00:00

If anyone else runs into this, we ended up using:

var mentors = (dynamicModuleManager.GetDataItems(mentorType)).Where(i => i.Visible == true &&
                i.Status == ContentLifecycleStatus.Live &&
                (i.GetValue<IList<Guid>>("mentorshipcategories").Any(j => CategoriesChecked.Contains(j)) ||
                i.GetValue<IList<Guid>>("industries").Any(j => CategoriesChecked.Contains(j)) ||
                i.GetValue<IList<Guid>>("businessstages").Any(j => CategoriesChecked.Contains(j))));

This thread is closed