我有一个类型为groups
的{{1}},我正在尝试生成DateTime*int*decimal*decimal list list
,每个元素都是{{1}内部列表中第四个元素的总和}}。
我的尝试如下,
decimal list
groups
假设是groups
|> List.map(fun x -> (List.reduce (fun acc elem -> elem + acc ))
,我的问题是如何访问上述lambda中元组的第四个元素?
答案 0 :(得分:6)
您可以在lambda参数声明中分解元组:fun (_,_,d,_) -> d
将返回元组的第3个元素。
您还可以使用List.sumBy
代替List.reduce
来简化代码。
//sample data
let groups = [
[(System.DateTime(), 1, 1.5M, 2.5M); (System.DateTime(), 1, 4.1M, 2.5M)]
[System.DateTime(), 1, 3.2M, 2.5M]
]
groups
|> List.map (List.sumBy (fun (_,_,d,_) -> d))