Еще один вариант вышеизложенного, но я хотел использовать существующие атрибуты DataMember в моем классе модели, поэтому только те свойства, которые я хочу сериализовать, отправляются на сервер в URL-адресе в запросе GET.
public string ToQueryString(object obj)
{
if (obj == null) return "";
return "?" + string.Join("&", obj.GetType()
.GetProperties()
.Where(p => Attribute.IsDefined(p, typeof(DataMemberAttribute)) && p.GetValue(obj, null) != null)
.Select(p => $"{p.Name}={Uri.EscapeDataString(p.GetValue(obj).ToString())}"));
}