Я создаю веб-сайт с помощью учебного руководства Microsoft «Razor Pages with Entity Framework Core в ASP.NET Core», в котором создается образец веб-приложения университета Contoso (https://docs.microsoft.com/en-us/aspnet/core/data/ef-rp/intro?view=aspnetcore-2.2&tabs=visual-studio).). В моем веб-приложении есть класс Groups, содержащийколлекция Office и одно из свойств Office - OfficeName - я бы хотел отсортировать по OfficeName. В примере с Университетом Контозо это было бы похоже на нажатие на ссылку «Инструкторы» и сортировку названий курсов по алфавиту. Я пыталсязагрузить свойства с помощью методов Include и ThenInclude, но не может получить доступ к свойству Title Title для выполнения OrderBy.
Вот модель инструктора -
public class Instructor
{
public int ID { get; set; }
[Required]
[Display(Name = "Last Name")]
[StringLength(50)]
public string LastName { get; set; }
public ICollection<CourseAssignment> CourseAssignments { get; set; }
public OfficeAssignment OfficeAssignment { get; set; }
public ICollection<Course> Courses { get; set; }
}
Вот модель курса -
public class Course
{
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Display(Name = "Number")]
public int CourseID { get; set; }
[StringLength(50, MinimumLength = 3)]
public string Title { get; set; } . . .
public ICollection<Enrollment> Enrollments { get; set; }
public ICollection<CourseAssignment> CourseAssignments { get; set; }
}
И образец Contoso University's Index для преподавателя Index.cshtml.cs -
public async Task OnGetAsync(int? id, int? courseID)
{
Instructor = new InstructorIndexData();
Instructor.Instructors = await _context.Instructors
.Include(i => i.OfficeAssignment)
.Include(i => i.CourseAssignments)
.ThenInclude(i => i.Course)
.ThenInclude(i => i.Department)
.Include(i => i.CourseAssignments)
.ThenInclude(i => i.Course)
.ThenInclude(i => i.Enrollments)
.ThenInclude(i => i.Student)
.AsNoTracking()
.OrderBy(i => i.LastName)
.ToListAsync();
if (id != null)
{
InstructorID = id.Value;
Instructor instructor = Instructor.Instructors.Where(
i => i.ID == id.Value).Single();
Instructor.Courses = instructor.CourseAssignments.Select(s => s.Course);
}
if (courseID != null)
{
CourseID = courseID.Value;
Instructor.Enrollments = Instructor.Courses.Where(
x => x.CourseID == courseID).Single().Enrollments;
}
}
Каждый преподаватель на странице указателя преподавателя отсортирован по тем курсам, которые они преподают, нет.ребенок (название курса)?