One modern approach for .NET projects (when not in ASP.NET with QueryString).
Extension method
public static class QueryStringHelper{ [Pure] public static string ToQueryString(this IDictionary<string, object?>? dict) { var queryParams = dict? .Where(kvp => kvp.Value != null) .Select(kvp => $"{HttpUtility.UrlEncode(kvp.Key)}={HttpUtility.UrlEncode(kvp.Value!.ToString())}") .ToArray(); if (queryParams is not { Length: > 0 }) return ""; return $"?{string.Join('&', queryParams)}"; }}
Usage
var queryParams = new Dictionary<string, object?>{ { "p1", "v1" }, { "p2", 2 }, { "p3", null }, // null: parameter ignored { "p4", false },}.ToQueryString();
Result:?p1=v1&p2=2&p4=false