c# - 合并两个 Collection<T>

标签 c# collections

我有一个返回 Collection<string> 的函数,然后递归地调用自己最终返回一个大的 Collection<string> .

现在,我只是想知道合并列表的最佳方法是什么? Collection.CopyTo()仅复制到字符串 [],并使用 foreach()循环感觉效率低下。但是,由于我还想过滤掉重复项,我觉得我最终会得到一个调用 Contains() 的 foreach。在 Collection 上.

我想知道,有没有一种更有效的方法可以让递归函数返回一个不重复的字符串列表?我不必使用 Collection , 它几乎可以是任何合适的数据类型。

只有排除,我绑定(bind)到 Visual Studio 2005 和 .net 3.0,所以没有 LINQ。

编辑:澄清一下:该函数将用户带出 Active Directory,查看用户的直接下属,然后递归地查看每个用户的直接下属。所以最终结果是给定用户的“命令链”中的所有用户的列表。由于这经常执行并且目前某些用户需要 20 秒,我正在寻找改进它的方法。顺便说一下,将结果缓存 24 小时也在我的列表中,但我想看看如何在应用缓存之前改进它。

最佳答案

如果您使用的是 List<>,则可以使用 .AddRange 将一个列表添加到另一个列表。

或者您可以像这样使用 yield return 动态组合列表:

public IEnumerable<string> Combine(IEnumerable<string> col1, IEnumerable<string> col2)
{
    foreach(string item in col1)
        yield return item;

    foreach(string item in col2)
        yield return item;
}

关于c# - 合并两个 Collection<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56078/

相关文章:

c# - 使用来自 C# 的参数以管理员身份运行 CMD

c# - Linq 到对象 : Distinct + Concatenation

data-structures - 如何有效地跟踪集合中的最小元素?

c# - 在 C# 中使用反射添加到未知类型的集合

java - 比较一个类的两个列表而不迭代列表

c# - Digg 风格的 Ajax 投票按钮

c# - 如何在工作单元 TransactionScope 内启用RetryOnFailure?

c# - 如何增加 UDPClient 吞吐量

java - 比较两个集合用于比较两个文本文件的添加、删除、修改

java - 如何从 'O(log n)' _ 时间复杂度的集合中删除最大值?