public IQueryable <Game> GetFilteredGameList(FilterPanel filter) { var games = Games.AsNoTracking(); if (filter == null) { return(games); } if (!string.IsNullOrEmpty(filter.Name)) { games = games.Where(g => g.Name.Contains(filter.Name)); } if (filter.Genre != Genre.Default) { games = games.Where(g => g.Genre == filter.Genre); } if (filter.Rating.HasValue) { games.Where(g => g.Rating >= filter.Rating); } if (!string.IsNullOrEmpty(filter.Publisher)) { games = games.Where(g => g.Publisher.Equals(filter.Publisher)); } if (!string.IsNullOrEmpty(filter.Developer)) { games = games.Where(g => g.Developer.Equals(filter.Developer)); } if (filter.ReleaseYearStart.HasValue && filter.ReleaseYearEnd.HasValue) { games = games.Where(g => g.ReleaseDate.Year >= filter.ReleaseYearStart && g.ReleaseDate.Year <= filter.ReleaseYearEnd); } else if (filter.ReleaseYearStart.HasValue && !filter.ReleaseYearEnd.HasValue) { games = games.Where(g => g.ReleaseDate.Year >= filter.ReleaseYearStart); } else if (!filter.ReleaseYearStart.HasValue && filter.ReleaseYearEnd.HasValue) { games = games.Where(g => g.ReleaseDate.Year <= filter.ReleaseYearEnd); } if (filter.Rating.HasValue) { games = games.Where(g => g.Rating >= filter.Rating); } if (!string.IsNullOrEmpty(filter.AgeRating)) { games = games.Where(g => g.AgeRating.Equals(filter.AgeRating)); } return(games); }