public void SetCandidateResult(Guid id, decimal? result)
{
if (result.HasValue)
{
if (result < 0)
{
throw new ArgumentOutOfRangeException("result", "Result be a positive number.");
}
if (this.TotalMarks.HasValue && result > this.TotalMarks)
{
throw new ArgumentOutOfRangeException(
"result", "Result must be lower than or equal to the total marks.");
}
}
var existingResult = this.results.Single(r => r.Id == id);
var newResult = new AssessmentResult(id, existingResult.Surname, existingResult.Forenames, result);
this.results.Remove(existingResult);
this.results.Add(newResult);
}