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

我可以查询表以确定它是否已被修改,如果记录不存在于数据库表中,然后更新它,但确定相反的情况证明有点棘手。另一个限制是,我需要结果是exists = true 和notexist = false 的 bool 值,以便我可以适本地处理记录的删除。

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

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

但是好像不能反过来管理。

列表和数据库表使用 Entity Framework 进行 1 对 1 映射。

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

最佳答案

看起来你已经颠倒了那里的逻辑。如果要检查特定记录是否存在,其 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() 的实体列表。

关于c# - 使用 Linq 确定记录是否不存在于列表中但存在于表中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23209711/

10-16 12:00