代码之家  ›  专栏  ›  技术社区  ›  Ecognium

持久筛选器:使用Or时在筛选器中进行操作

  •  3
  • Ecognium  · 技术社区  · 9 年前

    持久性具有OR筛选器 ||. 但它似乎没有相应的 &&. 我想做一些类似的事情 A && (B || C) && (D || E) 我不确定最干净的方法。

    我想我可以创造所有的组合 (A && B && D) || (A && C && D) || (A && B && E) || (A && C && E) 。即使对于这个简单的例子,它也变得相当笨拙。不确定是否有更好的方法 persistent .

    代码在我编译时编译(内部 selectList ) [A] ++ ([B] ||. [C]), etc. 但不确定它是否等同于我想要的。

    谢谢

    1 回复  |  直到 9 年前
        1
  •  3
  •   Cirdec    9 年前

    您可以使用 ++ <> 和筛选器列表。

    Persistent manual :

    people <- selectList [PersonAge >. 25, PersonAge <=. 30] []
    liftIO $ print people
    

    过滤器列表为 AND 因此,我们的约束意味着“年龄大于25岁,年龄小于或等于30岁”。我们稍后再描述ORing。