Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

C# Entity Framework Basics LINQ Queries Sorting a Query

Katrin Nitsche
Katrin Nitsche
23,462 Points

In Repository.cs update the GetCourses method to sort the list of available courses by the teacher's last name ...

In Repository.cs update the GetCourses method to sort the list of available courses by the teacher's last name and then by their first name. Remember, you can only make a single call to the OrderBy LINQ operator. To sort by additional properties, you can use the ThenBy operator.

This is the code I used. It looks all right too me but it is not accepted. I don't know what I am doing wrong.

Course.cs
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;

namespace Treehouse.CodeChallenges
{
    public class Course
    {
        public Course()
        {
            Students = new List<CourseStudent>();
        }

        public int Id { get; set; }
        public int TeacherId { get; set; }
        [Required, StringLength(200)]
        public string Title { get; set; }
        public string Description { get; set; }
        public int Length { get; set; }

        public Teacher Teacher { get; set; }
        public ICollection<CourseStudent> Students { get; set; }
    }
}
Repository.cs
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;

namespace Treehouse.CodeChallenges
{
    public static class Repository
    {
        public static List<Course> GetCourses()
        {
            using (var context = new Context())
            {
                return context.Courses.ToList(); // TODO
            }
        }

        public static List<Course> GetCoursesByTeacher(string lastName)
        {
            using (var context = new Context())
            {
                return context.Courses
                              .Where(c => c.Teacher.LastName == lastName)
                              .OrderBy(c => c.Teacher.LastName)
                              .ThenBy(c => c.Teacher.FirstName)
                              .ToList();
            }
        }
    }
}
Teacher.cs
namespace Treehouse.CodeChallenges
{
    public class Teacher
    {
        public int Id { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
    }
}

3 Answers

Steven Parker
Steven Parker
229,732 Points

:point_right: You may have worked on the wrong method.

It doesn't look like you've written any code yet for this task, which is to "update the GetCourses method". The GetCourses method in Repository.cs still has the original placeholder line with the "// TODO" comment.

It looks like you altered the GetCoursesByTeacher method instead.

using (var context = new Context()) { return context.Courses .Where(c => c.Teacher.LastName == lastName) .ToList(); }

Katrin Nitsche
Katrin Nitsche
23,462 Points

Hups. That is embarrassing. Thanks a lot.