Obtuve una función que devuelve un Collection<string>
, y que se llama recursivamente para eventualmente devolver un gran Collection<string>
.Fusionando dos Colección <T>
Ahora, me pregunto cuál es el mejor enfoque para fusionar las listas? Collection.CopyTo()
solo copia a la cadena [], y usar un loop foreach()
parece ser ineficiente. Sin embargo, dado que también quiero filtrar los duplicados, creo que terminaré con un foreach que llama al Contains()
en el Collection
.
Me pregunto, ¿hay una forma más eficiente de tener una función recursiva que devuelva una lista de cadenas sin duplicados? No tengo que usar un Collection
, puede ser prácticamente cualquier tipo de datos adecuado.
Exclusión única, estoy obligado a Visual Studio 2005 y .net 3.0, por lo que no LINQ.
Editar: Para aclarar: La función saca a un usuario de Active Directory, mira los informes directos del usuario y luego observa recursivamente los informes directos de cada usuario. Entonces el resultado final es una lista de todos los usuarios que están en la "cadena de comandos" de un usuario dado. Dado que esto se ejecuta con bastante frecuencia y en este momento toma 20 segundos para algunos usuarios, estoy buscando formas de mejorarlo. El almacenamiento en caché del resultado durante 24 horas también está en mi lista por cierto, pero quiero ver cómo mejorarlo antes de aplicar el almacenamiento en caché.
Creo que la advertencia es la función Contiene() que necesito verificar para duplicados, ya que esto tiene que recorrer la lista completa cada vez. Pero pasar como un árbitro podría funcionar para reducir los gastos generales. –
Pasar como ref no hace ninguna diferencia aquí a menos que asigne un nuevo objeto a myitems. Simplemente pasar por valor funcionará (el valor es la referencia al objeto, ref es la referencia a la variable que contiene la referencia al objeto). – Zooba