private async Task UpdateRatings(RatingData data, Movie movie) { var ratings = new List <Rating>(); var sources = await listsDbAccess.GetRatingSources(); var i = 1; foreach (var source in sources) { var property = data.GetType().GetProperties().ToList().Single(x => x.Name.Equals(source.Name, StringComparison.OrdinalIgnoreCase)); var score = (string)property.GetValue(data); float?floatScore = null; if (!string.IsNullOrEmpty(score)) { floatScore = float.Parse(score); } var rating = new Rating { Source = source, SourceId = source.Id, Movie = movie, MovieId = movie.Id, Id = i.ToString(), Score = floatScore }; ratings.Add(rating); i++; } movie.Ratings = ratings; }