0

我喜欢在 Xamarin.Forms 中使用 LiteDB。使用条件中的 id 或索引列表从表中获取对象列表的最佳实践是什么?目前,它看起来像这样:

_db.GetCollection<T>().FindAll().Where(q => listValues.Contains(Convert.ToInt32(q.GetProperty(idColumnName))));

listValues - 搜索到的 id 列表。idColumnName - 带有索引的列。

但是 FindAll 从 LiteDB 中检索所有记录。没有全扫描,还有更多有效的选择吗?

4

1 回答 1

3

请改用 Find 方法中的查询,它只会根据您的查询而不是完整数据集检索条目。根据 LiteDB 的指导,这比 Linq 查询返回的完整数据更有效:https ://github.com/mbdavid/LiteDB/wiki/Queries

所以您的查询如下所示

_d.GetCollection<T>().Find(q => listValues.Contains(Convert.ToInt32(q.GetProperty(idColumnName))))
于 2018-04-06T09:29:46.750 回答