You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何删除ID不存在于ViewModel中的数据库表记录

实现逻辑

核心思路是先确定需要保留的ID集合,再筛选出数据库中不在保留集合内的记录直接删除即可,具体实现如下:

// 提取ViewModel中需要保留的ID集合,用HashSet优化查找性能
var reservedIds = viewModel.Vs.Select(x => x.id).ToHashSet();

// 从数据库查询到的现有记录中,筛选出需要删除的项
var deleteList = result.table.Where(item => !reservedIds.Contains(item.id)).ToList();

// 执行删除操作,以EF Core为例
if (deleteList.Count > 0)
{
    yourDbContext.Version.RemoveRange(deleteList);
    yourDbContext.SaveChanges();
}

原有代码问题说明

  • 逻辑判断完全相反:原有代码判断新提交的项中存在对应ID时执行删除,和「删除不存在于提交数据中的记录」的需求完全相悖
  • 嵌套循环的实现效率极低,当数据量较大时会有明显的性能问题,使用HashSet做包含判断的时间复杂度为O(1),整体时间复杂度可优化到O(n)

内容的提问来源于stack exchange,提问作者xyz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 05:18:03