Entity framework EF LINQ按其他列表中不存在的值获取记录列表

Entity framework EF LINQ按其他列表中不存在的值获取记录列表,entity-framework,linq,Entity Framework,Linq,所以,我有一个连接表叫做: AppointmentsActivities 包括: AppointmentID ActivityID 我需要执行更新操作。因为它是一个连接表,所以更新应该不仅能够更新现有记录,而且能够插入新记录,或者删除不再需要在表中存在的记录(因为我正在传递一个具有appointmentID和ActivityID列表的实体) 我正在努力删除那些不应该再存在于表中的记录。 我必须删除所有具有相同AppointmentId的记录,但他的ActivityID不应出现在新活动列表中的

所以,我有一个连接表叫做:

AppointmentsActivities
包括:

AppointmentID
ActivityID
我需要执行更新操作。因为它是一个连接表,所以更新应该不仅能够更新现有记录,而且能够插入新记录,或者删除不再需要在表中存在的记录(因为我正在传递一个具有appointmentID和ActivityID列表的实体)

我正在努力删除那些不应该再存在于表中的记录。 我必须删除所有具有相同AppointmentId的记录,但他的ActivityID不应出现在新活动列表中的任何对象中

我编写的查询如下所示:

var remove = _context.AppointmentsActivities.
Where(i => i.AppointmentID == entity.ID && entity.Activities.Any(u => u.ActivityID != i.ActivityID)).
ToList();
其中:

i => i.AppointmentID == entity.ID
检查新传递的实体的appointmentID是否与数据库表中的相同

以及:

应该检查活动列表中的任何activityID是否等于数据库表中的activityID


很明显,我遗漏了一些东西,因为EF无法解析这个LINQ查询。我错过了什么?任何帮助都将不胜感激。谢谢。

尝试重写LINQ查询以使EF能够接受<代码>任何带有本地集合的都不起作用,因此替换为
包含

var ActivityID=entity.Activities.Select(a=>a.ActivityID.ToList();
var remove=\u context.AppointmentsActivities
。其中(i=>i.AppointmentID==entity.ID&&!ActivityID.Contains(i.ActivityID))
.ToList();
entity.Activities.Any(u => u.ActivityID != i.ActivityID)