0

我对 F# 很(非常)新,我正在为一个小问题挠头。我有一个string list list我试图操纵和改造的东西。这可能是微不足道的。

正在从 CSV 文件中读取以下数据:

1,ABC,3
1,DEF,3
1,XYZ,1
2,ABC,2
2,XYZ,1
3,DEF,2
3,XYZ,2

哪个对或错,我正在阅读string list list. 该数据表示一组非规范化的数据,其中0每条记录上索引处的字段是一个标识符字段。目前我只是试图拆分外部列表,以便我最终得到一个string list list list代表以下内容:

1,ABC,3        2,ABC,2        3,DEF,2
1,DEF,3        2,XYZ,1        3,XYZ,2
1,XYZ,1

然后,上面的结果将被推送到我的 Typed 模型中并输入到应用程序的其余部分。

4

2 回答 2

1

使用Seq.groupby-

input
|> Seq.groupBy (fun (a,b,c) -> a)
|> Seq.toList
于 2012-07-04T09:07:09.547 回答
1

在您的代码中:

csvRecords
|> Seq.groupBy (fun record -> (record.Item 0))
|> List.ofSeq
|> List.map(toTypedModel)

record.Item 0不是获取列表第一个元素的好方法。为此,您应该使用List.head或模式匹配。

您的示例如下所示:

csvRecords
|> Seq.groupBy List.head
|> Seq.map toTypedModel
|> List.ofSeq

我还更改了使用toTypedModel顺序的顺序,它有助于避免分配不必要的列表。

于 2012-07-04T09:57:37.077 回答