Me encuentro frecuentemente tratando con un objeto IEnumerable que necesito recorrer y hacer un cálculo para cada elemento que depende de la n inmediatamente anterior y siguientes objetosC# Looping a través de un IEnumerable para un cálculo que usa los elementos n anterior y n
Un ejemplo común es el cálculo de una media móvil, pero otras veces el cálculo es más complejo que eso y se basa en varios campos de cada uno de los elementos de la lista
nunca estoy seguro sobre la mejor manera de estructurar mis bucles La eficiencia es importante, pero la capacidad de mantenimiento y la legibilidad son más importantes.
A veces se convierten en una lista y luego utilizar un bucle para obtener elementos de [i-1], [i], [i + 1] y luego realizo mis cálculos.
Otras veces lo conservo como un IEnumerable, pero guardo en "caché" el par de elementos anteriores, por lo que no hago el cálculo hasta que llegué a [i + 1] en el ciclo foreach .
- También consideré el uso de una lista vinculada, por lo que podría utilizar los métodos .Previous y .Next.
¿Alguna sugerencia sobre qué técnica sería la mejor para usar?
No va a opinar en este momento (muchos pros y los contras una respuesta corta, y no tengo tiempo para una respuesta larga), pero otra posibilidad para algunos casos es que se muevan dos indicios en tándem. 'i' comienza en, por ejemplo, 0 y 'j' en 3, haces cosas con' k' yendo de 'i' a' j' (medio abierto, golpeando así a 0, 1 y 2), luego mueves '++ i; ++ j; 'y repita' k' de nuevo, hasta '++ j> list.Count' (por lo que j puntos justo fuera de la lista en el último pase). –