You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在C#中使用LiteDB插入List<Values>集合?

LiteDB批量插入List的实现方式

当然有办法实现批量插入集合!LiteDB的ICollection<T>接口本身就提供了批量插入的重载方法,官方示例侧重基础单条操作,但批量插入的用法其实很直接,给你两种常用方案:

1. 直接使用Insert方法(支持IEnumerable

LiteDB的Insert方法有重载版本,可以直接接收IEnumerable<T>类型的参数,你的List<Values>正好符合这个要求,代码示例如下:

// 获取Values集合
var col = db.GetCollection<Values>("values");
// 假设你已经初始化并填充了list2
var list2 = new List<Values>
{
    new Values { /* 初始化属性 */ },
    new Values { /* 初始化属性 */ }
};

// 批量插入整个List
var insertedIds = col.Insert(list2);

这里的insertedIds会返回所有成功插入文档的ID集合,方便你后续做关联操作。

2. 高效批量插入:InsertBulk方法

如果你的List包含大量数据(比如上千条以上),推荐使用InsertBulk方法,它内部做了IO优化,减少了磁盘写入的次数,性能会更好:

col.InsertBulk(list2);

注意:这个方法在LiteDB 5及以上版本可用,如果你用的是旧版本,直接用第一种Insert方法即可,旧版本的Insert也会处理批量插入,只是优化程度稍低。

额外提示

  • 确保你的Values类有一个主键属性(默认名为Id,或者通过[BsonId]特性指定自定义主键),LiteDB会自动为没有设置ID的文档生成唯一ID。
  • 如果插入过程中有重复ID的文档,LiteDB会抛出异常,你可以提前处理或者使用InsertOrReplace的批量版本(InsertOrReplace同样支持IEnumerable<T>)来覆盖已有文档。

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

火山引擎 最新活动