Подтвердить что ты не робот

Какой самый эффективный способ объединить два списка (из строки)?

Скажем, у меня есть:

Dim los1 as New List(Of String)
los1.Add("Some value")

Dim los2 as New List(Of String)
los2.Add("More values")

Каким будет наиболее эффективный способ объединения этих двух в один List(Of String)?

Изменить. Хотя я люблю решения, которые все предоставили, я, вероятно, должен был также упомянуть, что я застрял с использованием платформы .NET 2.0.

4b9b3361

Ответ 1

Я думаю,

los1.AddRange(los2)

Ответ 2

Если вы просто хотите увидеть последовательность из двух списков, используйте метод Enumerable.Concat.

Dim combined = los1.Concat(los2)

Это вернет IEnemurable(Of String), который содержит все элементы в los1 и los2. Он не будет выделять огромную новую коллекцию, но вместо этого будет выполнять итерацию по двум отдельным коллекциям.

Ответ 3

Ответ JaredPar даст вам объект, который будет перечислять оба списка. Если вы действительно хотите, чтобы объект List(Of String) содержал эти значения, он прост как:

Dim combined As New List(Of String)(los1.Concat(los2));

РЕДАКТИРОВАТЬ: вы знаете, только потому, что вы используете .NET 2.0, это не значит, что вы не можете катить свои версии некоторых методов расширения LINQ, которые вы лично найдете полезными. Метод Concat, в частности, был бы довольно тривиальным для реализации в С# *:

public static class EnumerableUtils {
    public static IEnumerable<T> Concat<T>(IEnumerable<T> first, IEnumerable<T> second) {
        foreach (T item in first)
            yield return item;

        foreach (T item in second)
            yield return item;
    }
}

Затем см. здесь:

Dim los1 as New List(Of String)
los1.Add("Some value")

Dim los2 as New List(Of String)
los2.Add("More values")

Dim combined As New List(Of String)(EnumerableUtils.Concat(los2, los2))

* Чтобы быть справедливым, это намного проще в С# благодаря ключевому слову yield. Это можно сделать в VB.NET, но было бы сложнее предоставить отложенное выполнение таким же образом, что и расширения LINQ.

Ответ 4

Union() потенциально, если вам нужен отдельный список записей (я верю, что он имеет только отдельный), это еще одна альтернатива.