public async Task <IActionResult> DeleteMarksForGivenSubject(int id, int studentId, int markId) { return(await ExecuteOperationOnMarks(id, studentId, async (marks, subject) => { if (markId > 0) { var mark = marks.First(m => m.Id == markId); if (mark == null) { return HttpNotFound("Student doesn't have mark of given id"); } subject.Marks.Remove(mark); await _subjectsRepository.UpdateMarksForSubject(subject.Id, subject.Marks).ConfigureAwait(false); return Ok(); } foreach (var studentMark in marks) { subject.Marks.Remove(studentMark); } return Ok(); }).ConfigureAwait(false)); }