我有一个名为“ attendeeList”的强类型列表,其中包含所有活动的与会者:
List<tb_Attendees> attendeeList
public partial class tb_Attendees
{
public int AttendeeId { get; set; }
public int MeetingId { get; set; }
public string AttendeeName { get; set; }
public bool IsActive { get; set; }
.....
我需要更新下表:
DataContext.tb_Attendees
这样,对于给定的MeetingId,对于不在列表中的所有AttendeeId,它将把这些记录更新为IsActive = false。基本上我正在做一个NOT IN。
我想做些什么:
DataContext.tb_Attendees.Where(p => p.MeetingId == meetingId && !attendeeList.Contains(p => p.AttendId) ).ToList().ForEach(x => x.IsActive = false);
DataContext.SaveChanges();
首先,这是正确的吗?我收到一条错误消息,说无法从int转换为Model.tb_Attendees。我是否需要像int list一样具有该列表,或者需要任何方式来完成此操作。
答案 0 :(得分:0)
您已经关闭,但是听起来您需要一个 ID 列表,而不是与会者列表:
var attendeeIDList = attendeeList.Select(a => a.AttendId);
DataContext.tb_Attendees
.Where(p => p.MeetingId == meetingId
&& !attendeeIDList.Contains(p => p.AttendId) )
.ToList()
.ForEach(x => x.IsActive = false);
我还要指出,ForEach
只是语法糖,在功能上等同于:
foreach(var x in
DataContext.tb_Attendees
.Where(p => p.MeetingId == meetingId
&& !attendeeIDList.Contains(p => p.AttendId) ))
{
x.IsActive = false;
}