用Kotlin过滤嵌套列表

时间:2018-11-30 05:23:22

标签: kotlin

:我想在列表中过滤列表。我所有的数据模型都是不可变的。

我的JSON结构如下所示

using (var session = OpenSession()) {
    var query = session.Query<Parent>().Select(p => new {
        Parent = p, Children = p.Children
    });
    var data = query.ToList();
}

问题陈述-基本上,我想创建一个根所有项目的列表,其中水果名称是苹果。目前,我的幼稚解决方案看起来像这样。这涉及创建一个临时可变列表,然后向其中添加特定项。

以下解决方案可以正常工作,但是还有其他更好的方法可以实现相同目的。

try {
    // save parent first
    var parent = new Parent();
    parent.Name = "Parent object";
    session.Save(parent);
    // then save child
    var child = new Child();
    child.Name = "Child object";
    child.Parent = parent;
    session.Save(child);
    session.Flush();
    tx.Commit();

}
catch (Exception) {
    tx.Rollback();
    throw;
}

1 个答案:

答案 0 :(得分:1)

filterany的组合将完成工作:

val result = root?.filter { item -> 
    item.fruits.any { it.id != null && it.name == "apple" } 
}

顺便说一句:您的解决方案将无法使用。 filter函数确实会返回您未使用的新列表。而且,您总是将项目添加到列表中,不仅是在谓词返回true时。