Если вы посмотрите под капотом, то свойство QueryString является NameValueCollection. Когда я делал подобные вещи, я обычно интересовался сериализацией и десериализацией, поэтому мое предложение состоит в том, чтобы построить NameValueCollection, а затем перейти к:
using System.Web;
using System.Collections.Specialized;
private string ToQueryString(NameValueCollection nvc)
{
var array = (from key in nvc.AllKeys
from value in nvc.GetValues(key)
select string.Format("{0}={1}", HttpUtility.UrlEncode(key), HttpUtility.UrlEncode(value)))
.ToArray();
return "?" + string.Join("&", array);
}
Возможно, я мог бы отформатировать это лучше: )
Я предполагаю, что в LINQ есть супер элегантный способ сделать это ...