No es raro para mí (o probablemente para cualquier otra persona) tener una lista de objetos que necesito para iterar y luego interactuar con una lista de propiedades. Uso un ciclo anidado, como este:Llamando a compañeros nerds de código: ¿alternativas a los bucles anidados?
IList<T> listOfObjects;
IList<TProperty> listOfProperties;
foreach (T dataObject in listOfObjects)
{
foreach (TProperty property in listOfProperties)
{
//do something clever and extremely useful here
}
}
¿Este es el patrón de tiempo y rendimiento probado para este problema? ¿O hay algo más divertido, más elegante o simplemente divertido (mientras se puede leer y mantener, por supuesto)?
El código anterior no me hace sonreír. ¿Alguien puede por favor ayudar a traer algo de alegría a mi loop?
¡Gracias!
Actualización: uso el término "nerd" en el sentido más positivo. Como parte de la definición de wikipedia, "eso se refiere a una persona que realiza actividades intelectuales con pasión". ¡Por "codicioso" me refiero a alguien que está preocupado por mejorarse continuamente como programador, encontrando nuevas, novedosas y elegantes formas de codificación que son rápidas, fáciles de mantener y hermosas! Se regocijan por haberse mudado de VB6 y quieren que las personas inteligentes critiquen su código y los ayuden a actualizarse. (Nota: también les gusta hacer nuevas palabras que terminan en -ify).
Nota final:
Gracias a Dave R, Earwicker y TheSoftwareJedi por el envío por el camino LINQ. ¡Es el tipo de código feliz que estaba buscando!
¿Por qué esta pregunta comienza con "nerds de código de llamada"? No me gusta el término "nerd". Este es un sitio para programadores. ¿Los "nerds del código" son un subconjunto de "programadores"? Tengo la sensación de que MrJeepster no se incluye en esa categoría, ¿se cree a sí mismo mejor que los "codiciosos"? – Guge
Mucha gente aquí prefiere hablar de proceso en lugar de código. El continuo "¿por qué estás haciendo eso?" se pone un poco cansado al final. Me gusta;) – krosenvold
Para los programadores de Java, http://homepages.mcs.vuw.ac.nz/~djp/jql/ es un punto de partida. Suponiendo que sus bucles anidados están destinados a detectar condiciones y coincidencias de igualdad; arriba haría el truco. Pero no si se necesitan reglas comerciales complejas. No sé el equivalente de C#, lo siento compañero – questzen