J'ai une liste d'objets. Une propriété de l'entrée d'objet individuel est le montant. Comment obtenir la somme du montant?
Si ma liste était de type double, je pourrais peut-être faire quelque chose comme ceci:
double total = myList.Sum();
Cependant, je veux quelque chose de similaire, mais cette syntaxe est incorrecte.
double total = myList.amount.Sum();
Comment dois-je procéder pour y parvenir? J'adorerais utiliser la fonction Sum si possible au lieu de parcourir et de calculer la valeur.
Et si vous devez le faire sur des éléments qui correspondent à une condition spécifique ...
la source
Une autre alternative:
la source
.Select(i => i.Moons).Sum()
vous pouvez utiliser.Sum(i => i.Moons)
Voici un exemple de code que vous pouvez exécuter pour effectuer un tel test:
Le même exemple pour un objet complexe est:
Mes résultats avec les optimisations du compilateur désactivées sont:
et pour le deuxième test sont:
il semble que LINQ est généralement plus lent que foreach (...) mais ce qui est bizarre pour moi, c'est que foreach (...) semble être plus rapide que for loop.
la source
Stopwatch
enSystem.Diagnostics
car il est un enregistreur de temps de haute performance. (Je ne vous ai pas voté contre)DateTime.Now
pour mesurer. Il a des performances terribles car il renvoie toujours l'heure locale.DateTime.UtcNow
est plus rapide; cependant, il n'utilise toujours pas une résolution aussi élevée que laStopwatch
classe.