一对多 LINQ 查询 - 编译器错误
One to Many LINQ Query - compiler error
请参阅下面的 LINQ 查询:
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) };
一名学生链接到一门课程。所以上面Course的值应该是课程的集合。但是,存在编译器错误 (System.ArguementNullException)。我做错了什么?
我可以使用 SQL,但是我是 LINQ 的新手。请从下面的数据库中查看 SQL:
***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; }
}
您似乎只是想让您的查询也为您的学生检索 Course
导航 属性。因此,您需要做的就是 Include
它:
var students = db.Students
.Include(s => s.Course)
.Where(s => s.Name.StartsWith("Bert");
请参阅下面的 LINQ 查询:
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) };
一名学生链接到一门课程。所以上面Course的值应该是课程的集合。但是,存在编译器错误 (System.ArguementNullException)。我做错了什么?
我可以使用 SQL,但是我是 LINQ 的新手。请从下面的数据库中查看 SQL:
***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; }
}
您似乎只是想让您的查询也为您的学生检索 Course
导航 属性。因此,您需要做的就是 Include
它:
var students = db.Students
.Include(s => s.Course)
.Where(s => s.Name.StartsWith("Bert");