il est vrai que la version codée à la main sera un peu plus rapide, mais à moins que vous sachiez que la performance est le problème clé de votre application, je ne m'en soucierais pas. La version LINQ du code ressemblerait à ceci:
IEnumerable<List<double>> queryResults = /*...*/
var aggregates =
from ds in queryResults
select new {
First = ds[0], Last = ds[ds.Count - 1],
Lowest = ds.Min(), Highest = ds.Max() };
Je pense que cela est certainement plus facile à lire :-). Si l'objet imbriqué (ds
) n'est pas de type List
, vous devrez utiliser les méthodes d'extension First()
et Last()
au lieu de l'indexation directe.
Notez que si vous êtes intéressé par les performances, vous pouvez également utiliser Parallel LINQ, qui exécute la requête sur plusieurs threads. Pour la liste courte, il n'y a aucune raison réelle de le faire, mais si la collection est grande, elle peut vous donner de meilleures performances (mieux que la version codée à la main).
Veuillez donner quelques exemples de code - il est difficile de comprendre quelle est votre situation en ce moment. –
http://stackoverflow.com/questions/611441/c-linq-grouping-by-specific-timestamp-intervals je devrais commencer un nouveau fil .. –
numsy, s'il vous plaît fournir un échantillon clair ici de ce que vous essayez Pour faire, je suis allé au lien mais je pense que ce que vous voulez dire dans ce post est perdu avec la situation que vous vouliez résoudre là-bas. – eglasius