使用Linq来确定记录是否不存在于列表中,而是存在于表中

本文关键字:列表 于表中 存在 Linq 记录 于列表 不存在 是否 使用 | 更新日期: 2023-09-27 17:59:27

我很难确定数据库表中是否存在记录,但列表中包含的更新记录中不存在记录。如果该记录不存在于更新的列表中,但存在于数据库表中,则需要删除该记录。

我可以查询该表以确定它是否已被修改,如果数据库表中不存在记录,则更新它,但事实证明,确定相反的情况有点棘手。另一个限制是,我需要结果是exist=true和notexist=false的布尔值,这样我就可以适当地处理记录的删除。

我这样做是为了确定数据库表中是否不存在该记录:

bool exists = db.table.Any(t => t.EntityID != list.EntityID)

但似乎无法扭转局面。

列表和数据库表使用实体框架进行1对1映射。

若记录存在于数据库中,但不在列表中,则删除。

使用Linq来确定记录是否不存在于列表中,而是存在于表中

看起来您已经颠倒了那里的逻辑。如果你想检查一个特定记录的存在,它的ID存储在list.EntityID中,它看起来像这样:

bool exists = db.table.Any(t => t.EntityID == list.EntityID);

如果你有一个实体列表,并且你想找到数据库中不存在的任何记录,你可以这样做:

var extraitems = db.table.Where(t => !list.Select(l => l.EntityID).Contains(t.EntityID));

这将为您提供一个可以传递给DeleteAllOnSubmit()的实体列表。

bool exists = db.table.Any(t => list.EntityID.Contains(t.EntityID))