If you donโt want to place UrlEncode(...) around each argument or define a helper function, the only way is to explicitly implicitly create the array and apply the method to each element:
var args = new[] { var1, var2, var3 }; Array.ConvertAll(args, UrlEncode); var result = string Format("{0}, {1}, {2}", args);
or
var args = new[] { var1, var2, var3 }; var result = string Format("{0}, {1}, {2}", args.Select(UrlEncode).ToArray());
or, if all you want to do is a comma between the elements:
var result = string.Join(", ", new[] { var1, var2, var3 }.Select(UrlEncode));
Using helper function:
var result = string.Format("{0}, {1}, {2}", UrlEncodeAll(var1, var2, var3));
or
var result = string.Join(", ", UrlEncodeAll(var1, var2, var3));
Where
string[] UrlEncodeAll(params string[] args) { Array.ConvertAll(args, UrlEncode); return args; }