F# 将字典(从C#传递)转换为F中的字符串#
编辑: 问题解决了。答案是:F# 将字典(从C#传递)转换为F中的字符串#,f#,F#,编辑: 问题解决了。答案是: |> Seq.sortBy (fun (KeyValue(k,v)) -> k) |> Seq.map (fun (KeyValue(k,v)) -> (sprintf "%s:%s" k v)) |> String.concat "," 原始问题: 我正试着做这个的F版本: var postData = "{" + string.Join( ",", sortedParameters.Select
|> Seq.sortBy (fun (KeyValue(k,v)) -> k)
|> Seq.map (fun (KeyValue(k,v)) -> (sprintf "%s:%s" k v))
|> String.concat ","
原始问题: 我正试着做这个的F版本:
var postData = "{"
+ string.Join(
",",
sortedParameters.Select(item => $"\"{item.Key}\":\"{item.Value}\"").ToList())
+ "}";
我有下面这本来自C#的字典:
我想对其进行排序,然后输出字符串中的所有值,如下所示:
"a":"1", "b":"2", "c":"3"
let Test (values : Dictionary<string, string>) : string =
|> Seq.sortBy (fun (KeyValue(k,v)) -> k)
|> Seq.iter (fun (KeyValue(k,v)) -> (sprintf "%s:%s" k v))
所以,我是这样开始的:
"a":"1", "b":"2", "c":"3"
let Test (values : Dictionary<string, string>) : string =
|> Seq.sortBy (fun (KeyValue(k,v)) -> k)
|> Seq.iter (fun (KeyValue(k,v)) -> (sprintf "%s:%s" k v))
我不明白错误信息。我的假设是,这将返回一个字符串列表,如:
{
"a:1", "b:2", "c:3"
}
在下一步,我必须加入一个字符串
显然,事情不是这样的:)
我错过了什么?你想要的是
Seq.map
,而不是Seq.iter
。前一个映射,后一个迭代,也就是说,它只是在每个元素上运行函数,期望有一些副作用。好了,现在就知道了:|>Seq.sortBy(fun(KeyValue(k,v))->k)|>Seq.map(fun(KeyValue(k,v))->(sprintf“%s:%s”kv))|>String.concat,“c#->思考的改变仍然需要一些时间:)