f# - 在 F# 中将列表分组为列表列表

标签 f#

好吧,所以我迷失了这一点。我有一个对象列表。每个对象作为一个非唯一的 ID 在其中。我想在这个 ID 上分组,但对于我的生活,我不知道如何做到这一点。

这就是我所拥有的

type fooObject = {
     Id : int
     Info : string
}

let fooObjects: fooObject list

数据可能看起来像这样
[ { Id = 1 ; Data = "foo" } ; { Id = 1 ; Data = "also foo" } ; { Id = 2 ; Data = "Not foo" } ]

我想要类似的东西
let fooObjectsGroupedById : fooObject list list

所以最终的结果会是这样的
[ [{ Id = 1 ; Data = "foo" } ; { Id = 1 ; Data = "also foo" } ] ; [{ Id = 2 ; Data = "Not foo" }]]

最佳答案

使用 List.groupBy :

let groupById fooObjects =
    List.groupBy (fun foo -> foo.Id) fooObjects
        |> List.map snd

关于f# - 在 F# 中将列表分组为列表列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45886612/

相关文章:

c# - 牛顿分形的 1/4 只画出来了

concurrency - F# 解决死锁

syntax - 为什么不推荐使用 yield 的箭头符号?

F# 模式匹配出错

.net - 我可以做些什么来改进这个 F# 代码?

f# - 代码引用和表达式树

asynchronous - 从 F# 异步工作流中删除命令式代码

f# - 如何在功能上迭代 f# 中列表中的每个项目一次?

f# - 如何使用 websockets

generics - 如何使用静态解析的类型参数解决递归映射中的奇怪类型错误?