Вот еще один подход, который я иногда использовал:
var sb = new StringBuilder();
string prefix = "";
foreach (var name in nameValues)
{
sb.Append(prefix);
prefix = "&";
sb.AppendFormat("{0}={1}", name.Key, name.Value);
}
Это просто способ добавления и перед каждой парой, отличной от первой, без использования условного теста.
Если вы хотите использовать свою первоначальную идею обрезки StringBuilder
, кстати, я бы предложил следующий код:
sb.Length--; // Remove the last character
return sb.ToString();