private void OnRecommendMovie(object obj) { var dataRepository = Container.GetInstance <IDataRepository>(); var userMovies = dataRepository.TrainingRatings.Where(r => r.User == SelectedUser).Select(r => r.Movie); var unratedMovies = new ConcurrentBag <Movie>(); Parallel.ForEach(dataRepository.Movies, movie => { if (!userMovies.Contains(movie)) { unratedMovies.Add(movie); } }); var results = new ConcurrentBag <IRating>(); Parallel.ForEach(unratedMovies, m => { try { var rating = SelectedMethod.RecommendSubject(SelectedUser, m); if (rating != null) { results.Add(rating); } } catch (Exception) { } }); RecommendedMovies = new ObservableCollection <IRating>(results.OrderBy(r => r.Value).Reverse().Take(10)); }
private void OnGetRecommendationValue(object obj) { try { RecommendationValue = SelectedMethod.RecommendSubject(SelectedUser, SelectedMovie); } catch (Exception e) { MessageBox.Show("Problem z wyznaczeniem wartości rekomendacji", "Błąd", MessageBoxButton.OK, MessageBoxImage.Error); } }