C# 将方法参数字符串[]转换为字典

C# 将方法参数字符串[]转换为字典,c#,.net,win-universal-app,C#,.net,Win Universal App,在一些实用程序库中,我有一些方法具有params[]参数。在许多情况下,这些结果都是键/值对,如果我能将它们转换成字典,这将更加有用 最有效的方法是什么?我可以通过Linq做这个吗 以下是一个例子: public static Uri appendParams(Uri uri, params string[] parameters) { if (uri == null) { return null; }

在一些实用程序库中,我有一些方法具有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;
    }
publicstaticuriappendparams(uriuri,params string[]parameters)
{
if(uri==null)
{
返回null;
}
if(参数==null){
返回uri;
}
var queryStringBuilder=newstringbuilder(uri.Query???);
//是否要在此处将params[]参数转换为字典
Dictionary paramsDictionary=null;//不确定执行此操作的最佳方法。。。
foreach(参数索引中的KeyValuePair kvp)
{
queryStringBuilder.Append(kvp.Key+“=”+kvp.Value);
}
var uriBuilder=新的uriBuilder(uri);
uriBuilder.Query=queryStringBuilder.ToString();
返回uriBuilder.Uri;
}

如果您正在构建一个字符串并立即使用它(不使用字典进行任何其他操作),那么您可以跳过字典创建步骤,只需从参数数组中构建查询字符串:

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]);
}
for(int i=0;i
请举例说明您的意思?数组中的键和值是否按特定顺序存储?为什么不指定一个字典作为参数类型,让客户端创建它?@YuvalItzchakov参数按以下顺序传递:键、值、键、值等@RufusL我考虑过了,但后来我采用了这种方法,却无法找到合适的方法,所以现在我很好奇。最终没有LINQ: