using System.Collections.Generic;
protected class QueryParameters
public string paramName { get; set; }
public IEnumerable<object> paramValues { get; set; }
protected static string ObjectToQueryParametersString(IReadOnlyCollection<QueryParameters> parameters)
return parameters.Aggregate(new StringBuilder("?"), (sb, parameter) => sb.Append(parameter.paramValues.Aggregate(new StringBuilder(), (sb2, paramValue) => sb2.Append($"{parameter.paramName}={paramValue}&"))),
result.Length-= "&".Length;
return result.ToString();
public static void Main()
var baseRoute = "http://localhost/api/users";
var userIdParams = new QueryParameters {paramName = "userid", paramValues = new List<object> { 1, 2, 3} };
var someOtherParams = new QueryParameters {paramName = "foo", paramValues = new List<string> {"x", "y", "z"} };
var paramString = ObjectToQueryParametersString(new List<QueryParameters> { userIdParams, someOtherParams });
Console.WriteLine(baseRoute + paramString);