簡體   English   中英

組合兩個List(Of String)的最有效方法是什么?

[英]What's the most efficient way to combine two List(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) ,其中包含los1los2中的所有元素。 它不會分配一個巨大的新集合,而是迭代2個獨立的集合。

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

* 公平地說,由於yield關鍵字,這在C#中要簡單得多。 可以在VB.NET中完成,但是以與LINQ擴展相同的方式提供延遲執行會更加棘手。

Union()可能,如果你想要一個不同的條目列表(我相信它只是一個獨特的),是另一種選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM