假设我有:
Dim los1 as New List(Of String)los1.Add("Some value")Dim los2 as New List(Of String)los2.Add("More values")
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)的最有效方法是什么?
List(Of String)
编辑:虽然我喜欢每个人提供的解决方案,但我可能也应该提到我坚持使用.NET 2.0框架。
sr4lhrrt1#
我认为
los1.AddRange(los2)
ie3xauqp2#
如果你只想看到两个列表的序列,那么使用IEnumerable.Concat方法。Option Infer On
IEnumerable.Concat
Dim combined = los1.Concat(los2)
这将返回一个IEnumerable(Of String),其中包含los1和los2中的所有元素。它不会分配一个巨大的新集合,而是会覆盖两个单独的集合。
IEnumerable(Of String)
los1
los2
nwsw7zdq3#
JaredPar的答案将给你一个给予对象,它将枚举两个列表。如果你真的想要一个List(Of String)对象包含这些值,它就像这样简单:
Dim combined As New List(Of String)(los1.Concat(los2));
编辑:你知道,仅仅因为你使用.NET 2.0并不意味着你不能推出你自己的版本的一些LINQ扩展方法,你个人觉得有用。特别是Concat方法在C#* 中实现起来非常简单:
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; }}
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)
}
然后,看这里:
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))
Dim combined As New List(Of String)(EnumerableUtils.Concat(los2, los2))
yield
hs1ihplo4#
如果你想要一个不同的条目列表(我相信它只做一个不同的),Union()可能是另一个选择。
4条答案
按热度按时间sr4lhrrt1#
我认为
ie3xauqp2#
如果你只想看到两个列表的序列,那么使用
IEnumerable.Concat
方法。Option Infer On
这将返回一个
IEnumerable(Of String)
,其中包含los1
和los2
中的所有元素。它不会分配一个巨大的新集合,而是会覆盖两个单独的集合。nwsw7zdq3#
JaredPar的答案将给你一个给予对象,它将枚举两个列表。如果你真的想要一个
List(Of String)
对象包含这些值,它就像这样简单:编辑:你知道,仅仅因为你使用.NET 2.0并不意味着你不能推出你自己的版本的一些LINQ扩展方法,你个人觉得有用。特别是
Concat
方法在C#* 中实现起来非常简单:然后,看这里:
yield
关键字,这在C#中更加简单。它可以在VB.NET中实现,但是以LINQ扩展所做的相同方式提供延迟执行会更棘手。hs1ihplo4#
如果你想要一个不同的条目列表(我相信它只做一个不同的),Union()可能是另一个选择。