private List <Artist> FilterDeeperThenArtist(bool includeGenre) { var tmpArtists = allArtists.Where(a => a.Name.ToUpper().Contains(ArtistFilter.ToUpper())).ToList(); var finalList = new List <Artist>(); foreach (var a in tmpArtists) { ResetHighlight(a); var query = a.Albums. Where(al => al.Name.ToUpper().Contains(AlbumFilter.ToUpper())); if (includeGenre) { query = query.Where(al => al.Genres.Contains(new Genre() { Name = GenreFilter }, new GenreByNameComparer())); } if (query.Count() > 0) { finalList.Add(a); } foreach (var ma in query) { ((TreeTag)ma.OptionalTag).IsHighlighted = true; } } return(finalList); }
private void OnFilterChanged(FilterType ft) { if (Artists == null) { return; } switch (ft) { case FilterType.Artist: { Artists = allArtists.Where(a => a.Name.ToUpper().Contains(ArtistFilter.ToUpper())); foreach (var a in Artists) { ResetHighlight(a); } } break; case FilterType.Album: Artists = FilterDeeperThenArtist(false); break; case FilterType.Genre: Artists = FilterDeeperThenArtist(true); break; } }