【问题标题】:How to Sort Mongo collection in F#如何在 F# 中对 Mongo 集合进行排序
【发布时间】:2021-02-07 10:54:07
【问题描述】:

我可以使用 F# 在 MongoDB 中获取一个集合使用没有问题

let draws = db.GetCollection<Draw>("draws").Find(fun _ -> true)

要排序,我希望它是:

let draws = db.GetCollection<Draw>("draws").Find(fun _ -> true).Sort(Builders<Draw>.Sort.Descending(d => d.drawDate))

但我收到以下错误。在智能感知中,所有类型似乎都被一路识别,所以我不知道该怎么做。

无法根据此程序点之前的类型信息确定方法“降序”的唯一重载。可能需要类型注释。

【问题讨论】:

  • 应该是fun d -&gt; d.drawDate 而不是d =&gt; d.drawDate
  • @FyodorSoikin 是的,你是对的,不过我两种方法都试过了——我以为我错过了什么。

标签: mongodb f#


【解决方案1】:

您的第二个 lambda 使用 C# 语法。我不确定这是否是导致编译器错误的原因,但我认为这样做更容易:

let draws =
    db.GetCollection<Draw>("draws")
        .Find(fun _ -> true)
        .SortByDescending(fun d -> d.drawDate :> obj)

(请注意SortByDescending 函数需要显式类型object 的结果,但它不应该给您带来任何问题。我认为这是因为创建驱动程序时考虑到了 C# 客户端,其中向上转换是隐含的。)

【讨论】:

  • 天才。谢谢你!几年后,我从 Typescript(以前是 C# 中的 O/O)切换到了 F# 语言和 FP 概念。不过,这里和那里只有一些陷阱!
  • 乐于助人。欢迎来到 F#。 :)
猜你喜欢
  • 1970-01-01
  • 2011-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-04
  • 1970-01-01
相关资源
最近更新 更多