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

あなたのコードで:

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

また、順序を sequence で使用するように変更しましたtoTypedModel。不要なリストの割り当てを回避するのに役立ちます。

于 2012-07-04T09:57:37.077 に答える
1

使用Seq.groupby-

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