es ist wahr, dass handcodierte Version ein bisschen schneller sein wird, aber wenn Sie nicht wissen, dass Leistung das Schlüsselproblem Ihrer Anwendung ist, würde ich mich nicht darum kümmern. Die LINQ-Version des Codes würde so aussehen:
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() };
Ich denke, das ist definitiv einfacher zu lesen :-). Wenn das verschachtelte Objekt (ds
) nicht vom Typ List
ist, müssen Sie anstelle der direkten Indexierung die Erweiterungsmethoden First()
und Last()
verwenden.
Wenn Sie an der Leistung interessiert sind, können Sie auch Parallel LINQ verwenden, das die Abfrage für mehrere Threads ausführt. Für eine kurze Liste gibt es keinen wirklichen Grund, dies zu tun, aber wenn die Sammlung groß ist, kann es Ihnen eine bessere Leistung geben (besser als eine single-threaded handcodierte Version).
Bitte geben Sie einen Beispielcode - es ist schwer zu verstehen, was Ihre Situation im Moment ist. –
http://stackoverflow.com/questions/611441/c-linq-grouping-by-specific-timestamp-intervals Ich sollte einen neuen Thread beginnen .. –
numsy, bitte liefern Sie eine klare Probe hier von dem, was Sie versuchen zu tun, ging ich auf den Link, aber ich denke, was du meinst in diesem Beitrag ist verloren mit der Situation, die Sie dort lösen wollten. – eglasius