IT

두 개의 목록(Of String)을 결합하는 가장 효율적인 방법은 무엇입니까?

itgroup 2023. 5. 13. 09:26
반응형

두 개의 목록(Of String)을 결합하는 가장 효율적인 방법은 무엇입니까?

예를 들어 다음과 같습니다.

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 프레임워크.

생각합니다

los1.AddRange(los2)

두 목록의 시퀀스를 보려면 다음을 사용합니다.Enumerable.Concat방법.

Dim combined = los1.Concat(los2)

이 옵션은 다음을 반환됩니다.IEnemurable(Of String)의 모든 요소를 포함합니다.los1그리고.los2새 컬렉션을 대량으로 할당하지 않고 두 개의 개별 컬렉션을 반복합니다.

JaredPar의 답변은 두 목록 모두에 열거할 개체를 제공합니다.만약 당신이 실제로 원한다면,List(Of String)이러한 값을 포함하는 개체는 다음과 같이 간단합니다.

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

편집: 를 사용한다는 이유만으로.NET 2.0은 개인적으로 유용하다고 생각하는 일부 LINQ 확장 방법의 자체 버전을 롤할 수 없다는 것을 의미하지 않습니다.Concat특히 C#*에서 구현하는 방법은 매우 사소한 것일 것입니다.

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))

* To be fair, this is a lot more straightforward in C# thanks to the yield keyword. It could be done in VB.NET, but it'd be trickier to provide deferred execution in the same manner that the LINQ extensions do.

유니온()은 잠재적으로 다른 항목 목록을 원하는 경우(나는 구별만 한다고 생각함) 다른 대안입니다.

언급URL : https://stackoverflow.com/questions/2457609/whats-the-most-efficient-way-to-combine-two-listof-string

반응형