public static String Join<T>(this IEnumerable<T> value, String separator, Func<T, String> func)
{
var sb = Pool.StringBuilder.Get();
if (value != null)
{
if (func == null) func = obj => "{0}".F(obj);
foreach (var item in value)
{
sb.Separate(separator).Append(func(item));
}
}
return sb.Put(true);
}