我有一个groups类型DateTime*int*decimal*decimal list list,我试图生成一个decimal list,每个元素是内部列表中第四个元素的总和groups.我的尝试如下,
groups
|> List.map(fun x -> (List.reduce (fun acc elem -> elem + acc ))
Run Code Online (Sandbox Code Playgroud)
elem假设是a DateTime*int*decimal*decimal,我的问题是如何在上面的lambda中访问元组的第四个元素?
您可以在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))
Run Code Online (Sandbox Code Playgroud)