将列表分组到F#中的列表列表

时间:2017-08-25 17:22:45

标签: 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" }]]

1 个答案:

答案 0 :(得分:7)

使用List.groupBy

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