public void Search(object sender, EventArgs e)
        {
            if (selectedCategory == null) selectedCategory = new ViewCategory() { ID = 0, Name = "All" };

            Researchers = View<researcher>(GetResearchers(selectedCategory));
        }
 /// <summary>
 /// Filters the researchers by the prescribed category.
 /// </summary>
 /// <param name="viewCategory">
 /// The category to filter the listing by.
 /// </param>
 public void SearchByCategory(ViewCategory viewCategory)
 {
     Researchers = View<researcher>(GetResearchers(viewCategory));
 }
        /// <summary>
        /// Gets a list of researchers taking into account how the list is to be viewed.
        /// </summary>
        public List<researcher> GetResearchers(ViewCategory viewCategory)
        {
            var lst = new List<researcher>();

            string name = SearchFilter;

            if (string.IsNullOrEmpty(name))
            {
                lst = researcherProvider.Get();
            }
            else
            {
                lst = researcherProvider.GetByNamePart(name);
            }

            switch (viewCategory.ID)
            {
                case 0: // All
                    break;
                case 1: // Researchers
                    lst = researcherProvider.GetStaff(lst);
                    break;
                case 2: // Students
                    lst = researcherProvider.GetStudents(lst);
                    break;
                case 3: // Level A
                    lst = researcherProvider.GetByEmploymentLevel(lst, researcher_level.A);
                    break;
                case 4: // Level B
                    lst = researcherProvider.GetByEmploymentLevel(lst, researcher_level.B);
                    break;
                case 5: // Level C
                    lst = researcherProvider.GetByEmploymentLevel(lst, researcher_level.C);
                    break;
                case 6: // Level D
                    lst = researcherProvider.GetByEmploymentLevel(lst, researcher_level.D);
                    break;
                case 7: // Level E
                    lst = researcherProvider.GetByEmploymentLevel(lst, researcher_level.E);
                    break;
            }

            return lst
                .OrderBy(r => r.family_name)
                .ThenBy(r => r.given_name)
                .Take(LIST_MAX_PAGINATION).ToList();
        }