asp.net 合并组合两个List(Of String)的最有效方法是什么?

b4lqfgs4  于 2023-10-21  发布在  .NET
关注(0)|答案(4)|浏览(139)

假设我有:

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框架。

sr4lhrrt

sr4lhrrt1#

我认为

los1.AddRange(los2)
ie3xauqp

ie3xauqp2#

如果你只想看到两个列表的序列,那么使用IEnumerable.Concat方法。
Option Infer On

Dim combined = los1.Concat(los2)

这将返回一个IEnumerable(Of String),其中包含los1los2中的所有元素。它不会分配一个巨大的新集合,而是会覆盖两个单独的集合。

nwsw7zdq

nwsw7zdq3#

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扩展所做的相同方式提供延迟执行会更棘手。
hs1ihplo

hs1ihplo4#

如果你想要一个不同的条目列表(我相信它只做一个不同的),Union()可能是另一个选择。

相关问题