y2k
y2k

Reputation: 66006

Loop through Dictionary with string key=>vals?? C#

public static string DictToQueryString(Dictionary<string, string> data)
{
    string querystring = "";

    foreach (string key, string val in data)
         querystring += key + "=" + val + "&";

    return querystring;
}

How i foreach?

Upvotes: 1

Views: 1947

Answers (3)

jason
jason

Reputation: 241711

Your "code" would have an extraneous "&" on the end. Do you want this? It's likely that you don't want this but please correct if you do. Assuming not, the simplest approach is to let String.Join do its job:

public static string DictToQueryString(Dictionary<string, string> data) { 
    return String.Join(
        "&",
        data.Select(kvp => String.Format("{0}={1}", kvp.Key, kvp.Value))
            .ToArray()
    );

In C# 4.0 the call to ToArray will be obviated.

Upvotes: 3

Dan Herbert
Dan Herbert

Reputation: 103527

Like this:

public static string DictToQueryString(Dictionary<string, string> data)
{
    StringBuilder queryString = new StringBuilder();

    foreach(var pair in data)
    {
        if (queryString.Length > 0)
            queryString.AppendFormat("&{0}={1}", pair.Key, pair.Value);
        else
            queryString.AppendFormat("{0}={1}", pair.Key, pair.Value);
    }

    return queryString.ToString();
}

Upvotes: 3

Adam Maras
Adam Maras

Reputation: 26863

I believe this is what you're looking for?

public static string DictToQueryString(Dictionary<string, string> data)
{
    string querystring = "";

    foreach (string key in data.Keys)
    {
        string val = data[key];
        querystring += key + "=" + val + "&";
    }

    return querystring;
}

Upvotes: 1

Related Questions