Ich denke, etwas in dieser Richtung sollte funktionieren:
%Vor%Leider kann ich das im Moment nicht testen, aber versuche es:
%Vor% Dieser Ansatz:
1) Gruppen nach Datum
2) Für jedes Datum wird nach Bereich gruppiert und der Gesamtwert berechnet
3) wählt für jedes Datum den Artikel mit dem größten Gesamtwert aus
4) Sie enden mit Ihrem Ergebnis
Laut LINQ in Action (Kapitel 5.3.3 - Beeinträchtigt LINQ to Objects die Leistung meines Codes?) ist die Verwendung der MaxElement-Erweiterungsmethode einer der effektivsten Ansätze. Ich denke, die Aufführung wäre O (4n); eine für die erste GroupBy, zwei für die zweite GroupBy, drei für die Count () und vier für die Schleife innerhalb von MaxElement.
DrDros Ansatz wird mehr wie O (n ^ 2) sein, da es die gesamte Liste für jedes Element in der Liste durchläuft.
Der Ansatz von StriplingWarrior wird näher an O (n log n) liegen, da er die Elemente sortiert. Obwohl ich zugeben werde, mag da eine verrückte Magie drin sein, die ich nicht verstehe.
Tags und Links linq