String.Join() calls List(IEnum) instead of looping

String.Join() instead of looping over IEnumerable<T> calls the constructor of List<T> accepting IEnumerable<T>.
According to https://github.com/mono/mono/blob/master/mcs/class/corlib/System.Collections.Generic/List.cs#L67 it should be more efficient.

Because JoinUnchecked() accepts string[] the option #2 is to call ToArray() extension method instead.
https://github.com/mono/mono/blob/master/mcs/class/System.Core/System.Linq/Enumerable.cs#L2886