我想通过traineeid过滤已注册和未注册的课程。在这里有数据库学员(ID,TraineeName),课程(ID,课程名称),TraineeCourseEnrollment(TraineeID,CourseID,ENrolledDate)3表。我可以简单地查询已注册的课程,但很难查询未注册的课程。这里是我的代码...过滤数据时Linq查询异常
public IEnumerable<CourseDTO> GetCourse(string traineeid, bool isenrolled)
{
List<Course> enrolled=new List<Course>();
List<CourseDTO> course_enrolled_dtos= new List<CourseDTO>();
List<CourseDTO> course_unenrolled_dtos = new List<CourseDTO>();
IEnumerable<TraineeCourseEnrollment> enrolled_courses = db.Trainees.Find(traineeid).TraineeCourseEnrollments.ToList();
foreach (TraineeCourseEnrollment enroll in enrolled_courses)
{
course_enrolled_dtos.Add(new CourseDTO() { CourseName = enroll.Course.CourseName, ID = enroll.Course.ID });
enrolled.Add(new Course() { CourseName = enroll.Course.CourseName, ID = enroll.Course.ID });
}
if(isenrolled)
{
return course_enrolled_dtos;
}
else
{
IEnumerable<Course> unenrolled=db.Courses.Except(enrolled);
foreach (Course unenroll in unenrolled)//Exception
{
course_unenrolled_dtos.Add(new CourseDTO() { CourseName = unenroll.CourseName, ID = unenroll.ID });
}
return course_enrolled_dtos;
}
}
此代码给人一种异常
无法创建类型的常量值“DAL_EF1.Course”。只有原始类型或枚举类型在此上下文中受支持。
在这里有什么最好的方式来使用Linq扩展方法来查询这些数据。
哪条线抛出异常? – MarcinJuraszek
foreach(课程在未注册时取消注销)此行出现错误 –