【问题标题】:how to do an ANY query with an array of objects?如何对对象数组进行 ANY 查询?
【发布时间】:2015-10-24 03:00:52
【问题描述】:

我正在喝饮料,而那些有一个名为 Types 的关系船。

饮料可以有多种类型,类型可以有多种饮料。

现在我想创建一个查询,为我提供所有“甜”类型的饮料。这很容易,但现在我有一个类型数组,我想要一个查询,它可以为我提供与数组中任何类型匹配的所有饮料。

我现在正在为我的国家/地区解决这个问题:

  List<String> filterCountries = mGson.fromJson(prefsUtil.filterCountries(), mType);
        if(filterCountries != null) {
            realmQuery.beginGroup();

            for (int cursor = 0; cursor < filterCountries.size(); cursor++) {
                String country = filterCountries.get(cursor);
                realmQuery.equalTo("country.name", country);
                if (cursor != (filterCountries.size() - 1)) {
                    realmQuery.or();
                }
            }
            realmQuery.endGroup();
        }

但我认为这是一个丑陋的解决方案。但我没有找到任何可以做到这一点?

【问题讨论】:

  • 您可能正在考虑与 Java 等效的 LINQ:stackoverflow.com/questions/18154023/… - 不确定 Android 上的当前状态是什么
  • 我认为realmQuery.beginGroup(); 和realmQuery.endGroup(); 是不必要的。除此之外,它看起来还可以。为什么你觉得它很丑?
  • 因为在 iOS 中我可以用关键字 ANY 来做这件事的时间要短得多,现在我需要这样写。但是谢谢:-)

标签: android realm


【解决方案1】:

你可以像这样遍历一个数组:

String[] myStringArray = {"Hello","World"};
for(String s : myStringArray)
{
    //Do something
}

一个 if 语句来检查该数组项是否是您要查找的并将其添加到“结果”数组中

【讨论】:

  • 这不是我要找的。例如,我想要所有类型为甜味、果味的饮料。所以我想要一个查询,给我所有这些类型的饮料。但这是可变的,这就是为什么我的类型在用户可以选择的数组中。
  • 是的,所以检查数组中的所有饮料,检查每个类型并将它们添加到包含您要查找的结果的新数组中。
  • 这是 n^2 最坏情况的解决方案。一定有更好的方法吗?
  • 我确信有一种更有效的方法,但这种方法仍然有效
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-04
  • 2016-11-04
  • 1970-01-01
  • 2020-12-16
  • 1970-01-01
  • 2018-05-01
  • 2019-11-29
相关资源
最近更新 更多