Eu tenho uma lista de objetos. Uma propriedade da entrada de objeto individual é a quantidade. Como obtenho a soma do valor?
Se minha lista era do tipo double, talvez eu pudesse fazer algo assim:
double total = myList.Sum();
No entanto, eu quero algo semelhante a isso, mas essa sintaxe está incorreta.
double total = myList.amount.Sum();
Como devo fazer isso? Eu adoraria usar a função Sum, se possível, em vez de percorrer e calcular o valor.
E se você precisar fazer isso em itens que correspondam a uma condição específica ...
fonte
Outra alternativa:
fonte
.Select(i => i.Moons).Sum()
você pode usar.Sum(i => i.Moons)
Aqui está um código de exemplo que você pode executar para fazer esse teste:
O mesmo exemplo para objeto complexo é:
Meus resultados com as otimizações do compilador desativadas são:
e para o segundo teste são:
parece que o LINQ é geralmente mais lento que o foreach (...), mas o que é estranho para mim é que o foreach (...) parece ser mais rápido do que o loop.
fonte
Stopwatch
emSystem.Diagnostics
como é um gravador de tempo de alto desempenho. (Eu não te diminuía de votar)DateTime.Now
para medir. Tem um desempenho terrível, pois sempre retorna a hora local.DateTime.UtcNow
é mais rápido; no entanto, ele ainda não usa a resolução mais alta que aStopwatch
classe.