[英]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)
,其中包含los1
和los2
中的所有元素。 它不會分配一個巨大的新集合,而是迭代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.