如何创建仅返回Electives类型课程的GetElectives接口?
实现GetElectives接口的两种方案
方案一:在CourseService中新增专用方法(推荐)
这种方式符合分层架构的职责划分,把业务逻辑放在Service层,同时利用EF的Linq查询直接在数据库层面过滤数据,性能更优。
- 在CourseService类中新增获取选修课的方法:
public List<Course> GetElectiveCourses() { // 直接在数据库层面过滤CourseType为"Electives"的课程 return _context.Courses.Where(course => course.CourseType == "Electives").ToList(); }
- 在控制器中添加对应的接口:
// 获取所有选修课 [HttpGet("GetElectives")] public IActionResult GetElectives() { var electiveCourses = _courseservice.GetElectiveCourses(); return Ok(electiveCourses); }
方案二:直接在控制器中复用现有方法过滤(不推荐)
如果暂时不想修改Service层,可以直接在控制器里对GetAllCourses返回的结果做内存过滤,但这种方式会先把所有课程加载到内存再筛选,数据量大时性能较差。
控制器中新增接口代码:
// 获取所有选修课 [HttpGet("GetElectives")] public IActionResult GetElectives() { var allCourses = _courseservice.GetAllCourses(); var electiveCourses = allCourses.Where(course => course.CourseType == "Electives").ToList(); return Ok(electiveCourses); }
内容的提问来源于stack exchange,提问作者user2835586
相关产品推荐
相关产品推荐

