linq - 如何从表中删除所有记录?
问题描述
我一直在寻找有关如何使用 LINQ 方法语法从表中删除所有记录的答案,但所有答案都是基于属性进行的。
我想从数据库中删除每一条记录。
该表如下所示:
public class Inventory
{
public int InventoryId { get; set; }
public string InventoryName { get; set; }
}
我不想删除基于特定名称或 ID 的记录。
我想删除所有记录。
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();
}
推荐阅读
- node.js - DocuSign:提供的访问令牌已过期、被撤销或格式错误
- c - 为什么时间复杂度是 n log(n) 而不是 log (n)?
- vue.js - 将多个输入设置为带索引的字符串
- c - 有没有办法用 switch 缩短 if else 语句?
- sql - Hive - 从一堆列中获取最大值
- php - 如何按键和值对二维数组进行排序
- rest - Flutter web:如何连接到一个 REST API 或 localhost
- javascript - 当我尝试在 React 中映射和渲染数据时,应用程序崩溃了
- java - HTTPClient ConnectionKeepAliveStrategy 未按预期工作
- angular - 错误错误:未捕获(承诺):TypeError:无法读取Angular和谷歌地图自动完成中未定义的属性'nativeElement'