Tengo una lista de objetos. Una propiedad de la entrada de objeto individual es la cantidad. ¿Cómo obtengo la suma de la cantidad?
Si mi lista era de tipo doble, podría hacer algo como esto:
double total = myList.Sum();
Sin embargo, quiero algo similar a esto, pero esta sintaxis es incorrecta.
double total = myList.amount.Sum();
¿Cómo debo hacer para lograr esto? Me encantaría usar la función Suma si es posible en lugar de recorrer y calcular el valor.
Y si necesita hacerlo en artículos que coinciden con una condición específica ...
fuente
Otra alternativa:
fuente
.Select(i => i.Moons).Sum()
que pueda usar.Sum(i => i.Moons)
Aquí hay un código de ejemplo que puede ejecutar para realizar dicha prueba:
El mismo ejemplo para objeto complejo es:
Mis resultados con las optimizaciones del compilador desactivadas son:
y para la segunda prueba son:
parece que LINQ es generalmente más lento que foreach (...) pero lo que es extraño para mí es que foreach (...) parece ser más rápido que para loop.
fuente
Stopwatch
enSystem.Diagnostics
que se trata de un registrador de tiempo de alto rendimiento. (No te rechacé por cierto)DateTime.Now
para medir. Tiene un rendimiento terrible, ya que regresa siempre a la hora local.DateTime.UtcNow
es más rápido; sin embargo, todavía no usa tan alta resolución como laStopwatch
clase.