在某些实用程序库中,我的方法有params []参数。在许多这样的情况下,这些最终会成为键/值对,如果我可以将它们转换为字典,它会更有用。
最有效的方法是什么?我能以某种方式通过Linq这样做吗?
以下是一个例子:
public static Uri appendParams(Uri uri, params string[] parameters)
{
if (uri == null)
{
return null;
}
if (parameters == null) {
return uri;
}
var queryStringBuilder = new StringBuilder(uri.Query ?? "");
//Would like to convert the params[] argument to a dictionary here
Dictionary<String, String> paramsDictionary = null; // Not sure best way to do this...
foreach (KeyValuePair<String, String> kvp in paramsDictionary)
{
queryStringBuilder.Append(kvp.Key + "=" + kvp.Value);
}
var uriBuilder = new UriBuilder(uri);
uriBuilder.Query = queryStringBuilder.ToString();
return uriBuilder.Uri;
}
答案 0 :(得分:0)
如果您正在构建一个字符串并立即使用它(而不是将字典用于其他任何内容),那么您可以跳过字典创建步骤,只需从参数数组中构建查询字符串:
for (int i = 0; i < parameters.Length - 1; i += 2)
{
var concatChar = (i == 0) ? "?" : "&";
queryString.AppendFormat("{0}{1}={2}",
concatChar, parameters[i], parameters[i + 1]);
}