UriQueryParamsCollection
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Net;
using System.Text;
namespace Azure.Storage
{
    internal sealed class UriQueryParamsCollection : Dictionary<string, string>
    {
        public UriQueryParamsCollection()
            : base((IEqualityComparer<string>)StringComparer.OrdinalIgnoreCase)
        {
        }
        public UriQueryParamsCollection(string encodedQueryParamString)
            : base((IEqualityComparer<string>)StringComparer.OrdinalIgnoreCase)
        {
            string text = encodedQueryParamString;
            if (text == null)
                throw Errors.ArgumentNull("encodedQueryParamString");
            encodedQueryParamString = text;
            if (encodedQueryParamString.StartsWith("?", true, CultureInfo.InvariantCulture))
                encodedQueryParamString = encodedQueryParamString.Substring(1);
            string[] array = encodedQueryParamString.Split(new char[1] {
                '&'
            }, StringSplitOptions.RemoveEmptyEntries);
            for (int i = 0; i < array.Length; i++) {
                string[] array2 = array[i].Split(new char[1] {
                    '='
                }, 2);
                if (array2.Length == 1)
                    Add(WebUtility.UrlDecode(array2[0]), null);
                else
                    Add(WebUtility.UrlDecode(array2[0]), WebUtility.UrlDecode(array2[1]));
            }
        }
        public override string ToString()
        {
            StringBuilder stringBuilder = new StringBuilder();
            using (Enumerator enumerator = GetEnumerator()) {
                while (enumerator.MoveNext()) {
                    KeyValuePair<string, string> current = enumerator.Current;
                    if (stringBuilder.Length > 0)
                        stringBuilder.Append('&');
                    stringBuilder.Append(WebUtility.UrlEncode(current.Key)).Append('=').Append(WebUtility.UrlEncode(current.Value));
                }
            }
            return stringBuilder.ToString();
        }
    }
}