internal static string GetQueryString(object request, IDictionary<string, RouteMember> propertyMap)
{
var result = StringBuilderCache.Allocate();
foreach (var queryProperty in propertyMap)
{
if (queryProperty.Value.IgnoreInQueryString)
continue;
var value = queryProperty.Value.GetValue(request, true);
if (value == null)
continue;
var qsName = Text.JsConfig.EmitLowercaseUnderscoreNames
? queryProperty.Key.ToLowercaseUnderscore()
: queryProperty.Key;
result.Append(qsName)
.Append('=')
.Append(FormatQueryParameterValue(value))
.Append('&');
}
if (result.Length > 0) result.Length -= 1;
return StringBuilderCache.ReturnAndFree(result);
}