【问题标题】:Realm dotnet: get element by index from RealmResultsRealm dotnet:从 RealmResults 中按索引获取元素
【发布时间】:2016-07-26 14:53:14
【问题描述】:

我正在使用 Xamarin 和 Realm 作为数据库来实现 android RecycleView。 RecycleView 需要按索引访问数据源。有没有办法从 RealmResults 中按索引检索元素?我发现只需调用 realmResults.get(index) 方法就可以在领域 java 中。但显然Realm的dotnet实现没有这样的方法。

同样根据 Realm 文档:

对象不会被复制——你会得到一个匹配的引用列表 对象,您可以直接使用匹配的原始对象 您的查询。

那么仅在 realmresults 上调用 .ToList() 并将此集合用作数据源是否足够优化?

【问题讨论】:

    标签: xamarin realm realm-net


    【解决方案1】:

    Realm-Xamarin docs 说:

    要提取名为 John 或 Peter 的所有用户的列表,您可以这样写:

    var johnsAndPeters = realm.All<Person>().Where(p => 
      p.FirstName == "John" || 
      p.FirstName == "Peter"); 
    var peopleList = johnsAndPeters.ToList();
    

    在本例中,ToList 调用会触发直接映射到 Realm 核心的查询。

    对象不会被复制 - 您会得到一个对匹配对象的引用列表,并且您可以直接使用与您的查询匹配的原始对象。

    基本上是的,通过调用ToList(),您在Realm-Java 中获得了本质上的RealmResults&lt;T&gt;

    【讨论】:

    • 嗯,不! ToList() 将立即迭代 RealmResults 并将所有对象拉入内存。它不是复制对象,但会立即实例化所有对象。 RealmLiist 只会在您依次访问时实例化。
    • 抱歉,ToList 方法可能适用于很多大小的列表 - 我只是对事实不准确做出了一点反应。目前这可能是一个足够好的解决方法。
    【解决方案2】:

    我们添加了一个issue 来实现这个公开为ElementAt

    【讨论】:

      猜你喜欢
      • 2012-04-10
      • 2015-08-30
      • 1970-01-01
      • 1970-01-01
      • 2018-07-09
      • 2012-09-06
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      相关资源
      最近更新 更多