skalowalne i bezpieczny wdrożenie generycznego przeliczalnego ciąg przyłączenia dla .NET 3.5. Użycie iteratorów polega na tym, że wartość ciągu sprzężenia nie utknęła na końcu łańcucha. To działa prawidłowo z 0, 1 i więcej elementów:
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();
}
}
Zastosowanie:
var arrayOfInts = new[] { 1, 2, 3, 4 };
Console.WriteLine(",".Join(arrayOfInts));
var listOfInts = new List<int> { 1, 2, 3, 4 };
Console.WriteLine(",".Join(listOfInts));
Enjoy!
Jaka wersja C#/.NET używasz? –
Używam .NET 3.5 –
Możliwy duplikat http://stackoverflow.com/questions/3211422/linq-convert-a-listint-to-a-joined-string-of-ints – goodeye