首页 > 解决方案 > 如何从表中删除所有记录?

问题描述

我一直在寻找有关如何使用 LINQ 方法语法从表中删除所有记录的答案,但所有答案都是基于属性进行的。

我想从数据库中删除每一条记录。

该表如下所示:

public class Inventory
    {
        public int InventoryId { get; set; }
        public string InventoryName { get; set; }
    }

我不想删除基于特定名称或 ID 的记录。

我想删除所有记录。

LINQ 方法语法不是必须的,但我更喜欢它,因为它更易于阅读。

标签: linq

解决方案


Linq 并不是要更改源代码。没有 LINQ 方法可以从您的输入中删除或更新任何元素。

更改输入的唯一方法是在某个集合中选择要删除的数据(的标识符),然后在 foreach 中逐个删除项目。可能是您与源集合的接口已经有一个 DeleteRange,在这种情况下您不必执行 foreach。

唉,你没有提到你的桌子是什么:是System.Data.DataTable吗?或者也许是一个实体框架DbSet<...>?代表表格的任何其他常用类?

如果你的表类是一个System.Data.DataTable,或者实现ICollection,它应该有一个方法Clear

如果您的表格是实体框架DbSet<...>,那么您是否可以使用“清除”取决于您的提供者(您使用的数据库管理系统)。通常您需要执行以下操作:

using (var dbContext = new MyDbContext(...))
{
    List<...> itemsToDelete = dbContext.MyTable.Where(...).ToList();
    dbContext.MyTable.RemoveRange(itemsToDelete);
    dbContext.SaveChanges();
}
    

推荐阅读