У меня есть функция, которая возвращает Collection<string>
, и это называет себя рекурсивно, чтобы в конечном итоге вернуть один большой Collection<string>
.Объединение двух коллекций <T>
Теперь, мне просто интересно, что лучший подход для объединения списков? Collection.CopyTo()
только копии в строку [], и использование цикла foreach()
кажется неэффективным. Тем не менее, поскольку я также хочу отфильтровать дубликаты, я чувствую, что в итоге я получаю foreach, который вызывает Contains()
на Collection
.
Интересно, есть ли более эффективный способ иметь рекурсивную функцию, которая возвращает список строк без дубликатов? Мне не нужно использовать Collection
, это может быть практически любой подходящий тип данных.
Только исключение, я связан с Visual Studio 2005 и .net 3.0, поэтому LINQ.
Редактировать: Чтобы уточнить: функция выводит пользователя из Active Directory, просматривает прямые отчеты пользователя, а затем рекурсивно просматривает прямые отчеты каждого пользователя. Таким образом, конечным результатом является список всех пользователей, которые находятся в «цепочке команд» данного пользователя. Поскольку это выполняется довольно часто и на данный момент занимает 20 секунд для некоторых пользователей, я ищу способы его улучшить. Кэширование результата за 24 часа также входит в мой список, но я хочу посмотреть, как его улучшить, прежде чем применять кеширование.
Я думаю, что оговорка - это функция Содержит(), которую мне нужно проверить на наличие дубликатов, так как это должно проходить через весь список каждый раз. Но передача как ref могла бы работать, чтобы уменьшить накладные расходы. – 2008-09-11 09:29:28