One to Many LINQ Query - compiler error

108 Views Asked by At

Please see the LINQ query below:

var test = from s in db.Students
           join c in db.Courses on s.courseid equals c.id into d
           where s.name.StartsWith("Bert")
           select new Student { id=s.id,name=s.name, Course = d.Select(x => x.name) };

A student links to one courses. Therefore the value of Course in the above should be a collection of courses. However, there is a compiler error (System.ArguementNullException). What am I doing wrong?

I am competent using SQL, however I am new to LINQ. Please see the SQL from the database below:

enter image description here

***Student Class***
  public partial class Student
    {
        public int id { get; set; }
        public string name { get; set; }
        public Nullable<int> age { get; set; }
        public Nullable<int> courseid { get; set; }

        public virtual Course Course { get; set; }
    }

    Course Class

 public partial class Course
    {
        public Course()
        {
            this.Students = new HashSet<Student>();
        }

        public int id { get; set; }
        public string name { get; set; }

        public virtual ICollection<Student> Students { get; set; }
    }
1

There are 1 best solutions below

13
On BEST ANSWER

It seems you are just trying to get your query to also retrieve the Course navigation property for your students. As such, all you need to do is Include it:

var students = db.Students
    .Include(s => s.Course)
    .Where(s => s.Name.StartsWith("Bert");