Una implementación escalable y segura de una combinación de cadena enumerable genérica para .NET 3.5. El uso de iteradores es para que el valor de la cadena de unión no se atasque al final de la cadena. Funciona correctamente con 0, 1 y más elementos:
public static class StringExtensions
{
public static string Join<T>(this string joinWith, IEnumerable<T> list)
{
if (list == null)
throw new ArgumentNullException("list");
if (joinWith == null)
throw new ArgumentNullException("joinWith");
var stringBuilder = new StringBuilder();
var enumerator = list.GetEnumerator();
if (!enumerator.MoveNext())
return string.Empty;
while (true)
{
stringBuilder.Append(enumerator.Current);
if (!enumerator.MoveNext())
break;
stringBuilder.Append(joinWith);
}
return stringBuilder.ToString();
}
}
Uso:
var arrayOfInts = new[] { 1, 2, 3, 4 };
Console.WriteLine(",".Join(arrayOfInts));
var listOfInts = new List<int> { 1, 2, 3, 4 };
Console.WriteLine(",".Join(listOfInts));
¡Disfrutar!