【问题标题】:Use "where in" for LiteDB对 LiteDB 使用“在哪里”
【发布时间】:2018-06-08 13:27:13
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: xamarin.forms where-in litedb


    【解决方案1】:

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

    所以您的查询如下所示

    _d.GetCollection<T>().Find(q => listValues.Contains(Convert.ToInt32(q.GetProperty(idColumnName))))
    

    【讨论】:

    • 感谢您的回复。我会试试的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-24
    • 1970-01-01
    • 2012-10-07
    • 2018-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多