В C # как вы сортируете на свойство коллекции сущностей? - PullRequest
0 голосов
/ 06 июля 2019

Я создаю веб-сайт с помощью учебного руководства 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;
        }
    }

Каждый преподаватель на странице указателя преподавателя отсортирован по тем курсам, которые они преподают, нет.ребенок (название курса)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...