public static UriBuilder SetQueryParameters(this UriBuilder uri, NameValueCollection queryParameters, bool skipEmptyValues = false)
{
var collection = uri.ParseQuery();
foreach (var name in queryParameters.AllKeys)
{
collection.Set(name, queryParameters[name]);
}
var pairs = collection.AsKeyValuePairs();
if (skipEmptyValues)
{
pairs = pairs.Where(x => !string.IsNullOrEmpty(x.Value));
}
uri.Query = pairs
.Select(pair => pair.Key == null ? pair.Value : pair.Key + "=" + pair.Value)
.ToString("&");
return uri;
}