У меня есть этот оператор if else, который отлично работает на моем ExamController.cs, но я хотел использовать оператор switch, чтобы его было легче читать. Единственное, что я добавил в оператор switch, это ExamId.
Почему этот оператор if else работает, но не мой случай переключения. Ошибка связана с возвратом, но я не вносил никаких изменений в возврат.
if (model.SearchType == "School")
{
result = FindExams((e) => e.School.School_Name.Contains(model.SearchInput));
}
else if (model.SearchType == "Exam Date")
{
result = FindExams((e) => e.Exam.ExamDate >= model.StartDate.Date && e.Exam.ExamDate <= model.EndDate.Date);
}
else if (model.SearchType == "District")
{
result = FindExams((e) => e.District.Name.Contains(model.SearchInput));
}
else if (model.SearchType == "ID")
{
result = FindExams((e) => e.Student.ID.Contains(model.SearchInput));
}
else if (model.SearchType == "First Name")
{
result = FindExams((e) => e.Student.FirstName.Contains(model.SearchInput));
}
else if (model.SearchType == "Last Name")
{
result = FindExams((e) => e.Student.LastName.Contains(model.SearchInput));
}
return result.OrderByDescending(r => r.ExamDate);
Заявление о переключении
switch (model.SearchType)
{
case "School":
result = this.FindExams((e) => e.School.School_Name.Contains(model.SearchInput));
break;
case "ExamDate":
result = FindExams((e) => e.Exam.ExamDate >= model.StartDate.Date && e.Exam.ExamDate <= model.EndDate.Date);
break;
case "District":
result = this.FindExams((e) => e.District.Name.Contains(model.SearchInput));
break;
case "ID":
result = this.FindExams((e) => e.Student.ID.Contains(model.SearchInput));
break;
case "First Name":
result = this.FindExams((e) => e.Student.FirstName.Contains(model.SearchInput));
break;
case "Last Name":
result = this.FindExams((e) => e.Student.LastName.Contains(model.SearchInput));
break;
case "Exam Id":
int examId = int.Parse(model.SearchInput);
result = this.FindExams((e) => e.Exam.Exam_Id == examId);
break;
}
return result.OrderByDescending(r => r.ExamDate);