Class to build an HTTP query string (to be assigned to a UriBuilder.Query property).
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace YourNamespaceHere
{
/// <summary>
/// Builds an HTTP query string.
/// </summary>
/// <see cref="http://stackoverflow.com/a/18759100/155167"/>
public class QueryStringBuilder
{
private readonly List<KeyValuePair<string, object>> _list;
public QueryStringBuilder()
{
_list = new List<KeyValuePair<string, object>>();
}
public QueryStringBuilder Add(string name, object value)
{
_list.Add(new KeyValuePair<string, object>(name, value));
// I changed this to make it more fluent. - M.D.
return this;
}
public string Build()
{
return String.Join("&", _list.Select(kvp => String.Concat(
Uri.EscapeDataString(kvp.Key),
"=",
Uri.EscapeDataString(kvp.Value.ToString()))));
}
public void Clear()
{
_list.Clear();
}
public override string ToString()
{
return Build();
}
}
}