我有一个返回 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/