Метод расширения вы имеете в виду, Enumerable.Join для присоединения коллекций, а значит, вы поместите их бок о бок, и попытаться соответствовать пунктов против пунктов, дает результаты. Подумайте об этом, как сопоставление телефонной книги с вашим списком имен для вечеринки, чтобы найти номер телефона для всех имен, которые у вас есть в списке.
Итак, нет, метод расширения Join не может использоваться для размещения их одного массива друг за другом и объединения их в один длинный массив.
Существует альтернатива, однако вы можете использовать метод расширения Enumerable.Concat в том же классе.
Этот метод не работает с/только с массивами, но на всех типах сбора, которые реализуют IEnumerable<T>
, и, следовательно, также производит в качестве результата еще один IEnumerable<T>
. Затем этот результат можно преобразовать в массив с использованием Enumerable.ToArray.
Таким образом, можно использовать следующий код:
var stringies1 = new [] {"Blood", "is", "Thicker", "Than", "Water" };
var stringies2 = new [] { "and", "so", "is", "wine" };
var stringies3 = stringies1.Concat(stringies2).ToArray();
// stringies3 now contains "Blood", "is", ... and "and", "so", "is", ...
Это предполагает, что вы используете .NET 3.5 и следующие в использовании-списка в верхней части файла:
using System.Linq;
Если, с другой стороны, вы (или кто-то другой, нашедший этот ответ) не используете .NET 3.5, вам нужен какой-то ручной код. Вот простой общий метод (предполагается, что .NET 2.0), который может помочь вам:
public static T[] Concat<T>(T[] firstSource, T[] secondSource,
params T[] restOfSources)
{
// omitted validation of non-null arguments, etc.
Int32 totalLength = firstSource.Length + secondSource.Length;
foreach (T[] source in restOfSources)
totalLength += source.Length;
T[] result = new T[totalLength];
Int32 currentIndex = 0;
Array.Copy(firstSource, 0, result, currentIndex, firstSource.Length);
currentIndex += firstSource.Length;
Array.Copy(secondSource, 0, result, currentIndex, secondSource.Length);
currentIndex += secondSource.Length;
foreach (T[] source in restOfSources)
{
Array.Copy(source, 0, result, currentIndex, source.Length);
currentIndex += source.Length;
}
return result;
}
Это может быть использовано, как это:
var stringies1 = ...
var stringies2 = ...
var stringies3 = YourClass.Concat(stringies1, stringies2);
К сожалению мне нужно разностное между string.join() и stringies1.Join() (экземпляр и расширение метода) – udana