public void UpdateFilmCategories(Farcas_Viorel_ProiectContext context, string[] selectedCategories, Film filmToUpdate) { if (selectedCategories == null) { filmToUpdate.FilmCategories = new List <FilmCategory>(); return; } var selectedCategoriesHS = new HashSet <string>(selectedCategories); var filmCategories = new HashSet <int> (filmToUpdate.FilmCategories.Select(c => c.Category.ID)); foreach (var cat in context.Category) { if (selectedCategoriesHS.Contains(cat.ID.ToString())) { if (!filmCategories.Contains(cat.ID)) { filmToUpdate.FilmCategories.Add( new FilmCategory { FilmID = filmToUpdate.ID, CategoryID = cat.ID }); } } else { if (filmCategories.Contains(cat.ID)) { FilmCategory courseToRemove = filmToUpdate .FilmCategories .SingleOrDefault(i => i.CategoryID == cat.ID); context.Remove(courseToRemove); } } } }