LINQ, Unable to create a constant value of type XXX. Only primitive types or enumeration types are supported in this context

c#, entity-framework, linq

Solution

You can't use `Contains` with non-primitive values. Do

Where(l => l.Courses.Select(c => c.CourseId).Contains(courseId)

(or the Id field you use).

Problem

In my application I have Lecturers and they have list of Courses they can teach and when I'm deleting a course I want to remove connection to lecturers. Here's the code: ``` public void RemoveCourse(int courseId) { using (var db = new AcademicTimetableDbContext()) { var courseFromDb = db.Courses.Find(courseId); var toRemove = db.Lecturers .Where(l => l.Courses.Contains(courseFromDb)).ToList(); foreach (var lecturer in toRemove) { lecturer.Courses.Remove(courseFromDb); } db.SaveChanges(); } } ``` but it doesn't work. I get NotSupportedException: Unable to create a constant value of type `Course`. Only primitive types or enumeration types are supported in this context. What am I doing wrong?

Original source

Related problems