我正在使用以下技术:C#,SQL Server,ASP.NET和Entity Framework以及Linq。 我有很多关系,使用急切的负载。 我希望获得所有刻有学生的课程。正如你所看到的,我有一对多关系,从学生到题写表。
模型类:
public class Courses
{
[Required]
public int Id { get; set; }
//more properties here
public student stud { get; set; }
}
public class Enroll
{
[Key]
public intId { get; set; }
//properties here
[Required]
public string StudentId{ get; set; }
public Courses Courses{ get; set; }
}
public class student{
public intId { get; set; }
//other properties
public Inscripe Inscription {get;set}
}
这就是我的控制器:
public IEnumerable<course> GetCoursesStudent(Int studentId)
{
//some code here to validate
var result = _dbContext
.Enroll.Include(c => c.Courses)
.Where(c => c.StudentId == studentId)
.SelectMany(c => c.Courses).ToList();
}
问题: 我从SelectMany收到一个错误:方法的类型isgument Queribly.selectMany(IQueryableExpression&gt;&gt;不能用于使用。
我该如何解决?
答案 0 :(得分:0)
您为IEnumerable指定的类型是错误的。它应该是“课程”而不是“课程”:
public IEnumerable<Courses> GetCoursesStudent(Int studentId)
{
var result = _dbContext
.Enroll
.Include(c => c.Courses)
.Where(c => c.StudentId == studentId)
.SelectMany(c => c.Courses)
.ToList();
}
Enroll类的“Courses”属性应该是可枚举的:
public class Enroll
{
[Key]
public intId { get; set; }
[Required]
public string StudentId { get; set; }
public IEnumerable<Courses> Courses { get; set; }
}