public void ChangeSort(ArtistSort sort)
        {
            ViewSource = new CollectionViewSource {
                IsSourceGrouped = true
            };

            switch (sort)
            {
            case ArtistSort.AtoZ:
                ViewSource.Source = _libraryCollectionService.ArtistsByName;
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(sort), sort, null);
            }
        }
        public void ChangeSort(ArtistSort sort)
        {
            ViewSource = new CollectionViewSource { IsSourceGrouped = true };

            switch (sort)
            {
                case ArtistSort.AtoZ:
                    ViewSource.Source = _libraryCollectionService.ArtistsByName;
                    break;
                default:
                    throw new ArgumentOutOfRangeException(nameof(sort), sort, null);
            }
        }
        public ActionResult SearchResults(string NameSearchString, Int32[] SelectedGenres, ArtistSort SelectedSort, SongsController.SortOrder SelectedSortOrder /*, TODO: Add parameter for Rating, once that is set up*/)
        {
            List <Artist> SelectedArtists = new List <Artist>();
            List <Artist> AllArtists      = db.Artists.ToList();

            var query = from a in db.Artists
                        select a;

            var qtest = query;

            if (NameSearchString != null && NameSearchString != "")
            {
                query = query.Where(a => a.ArtistName.Contains(NameSearchString));
            }

            if (qtest != query)
            {
                SelectedArtists = query.ToList();
            }

            //TODO: Add rating search once that functionality is live

            List <Artist> ArtistInGenre;

            if (SelectedGenres != null)
            {
                foreach (int id in SelectedGenres)
                {
                    Genre genre = db.Genres.Find(id);

                    ArtistInGenre = query.Where(a => a.Genres.Any(g => g.GenreID.Equals(id))).ToList();
                    foreach (Artist a in ArtistInGenre)
                    {
                        if (SelectedArtists.Contains(a) == false)
                        {
                            SelectedArtists.Add(a);
                        }
                    }
                }
            }

            if (SelectedArtists.Count == 0)
            {
                SelectedArtists = db.Artists.ToList();
            }

            switch (SelectedSort)
            {
            case ArtistSort.Name:
                SelectedArtists = SelectedArtists.OrderBy(s => s.ArtistName).ToList(); break;
                //TODO: Add song sort by rating case once that funtionality is live
                //case SongSort.Rating:
                //; break;
            }

            switch (SelectedSortOrder)
            {
            case SongsController.SortOrder.Ascending:
                SelectedArtists = SelectedArtists; break;

            case SongsController.SortOrder.Descending:
                SelectedArtists.Reverse(); break;
            }

            ViewBag.ArtistsCount      = CountArtists(SelectedArtists);
            ViewBag.TotalArtistsCount = CountArtists(AllArtists);
            ViewBag.AllGenres         = GetAllGenres();

            return(View("Index", SelectedArtists));
        }