private async Task OnCourseSearchChange(ChangeEventArgs e) { var search = e.Value?.ToString().ToLower(); if (search.Length > 2 && !searchingCourse) { searchingCourse = true; searchedCourses = await ProgramContext.SearchCoursesByName(search, ProgrammeId); lastCourseSearch = search; } else if (search.Contains(lastCourseSearch) && searchingCourse) { searchedCourses = searchedCourses.Where(x => x.CourseName.ToLower().Contains(search)).ToList(); lastCourseSearch = search; } else { searchedCourses.Clear(); searchingCourse = false; lastCourseSearch = ""; } this.StateHasChanged(); }