Mit LINQ werden einige Berechnungen für das aktuelle und das nächste Objekt ausgeführt

7

Gibt es eine elegante Lösung, um durch eine geordnete Liste zu gehen, um einige Berechnungen für das aktuelle und das nächste Objekt durchzuführen? Es muss einen klügeren Weg mit LINQ geben, um Folgendes zu tun:

%Vor%     
Seatech 29.07.2013, 19:24
quelle

4 Antworten

11

Am einfachsten vergleichen Sie jedes aufeinanderfolgende Element in einer Liste wie folgt:

%Vor%

Alternativ können Sie dies tun:

%Vor%

Aber diese zweite Methode funktioniert nur mit List<T> , T[] oder einem beliebigen Typ, der Array-Stil Indexer unterstützt.

    
p.s.w.g 29.07.2013, 19:30
quelle
9

Andere Option besteht darin, die Aggregatfunktion zu verwenden und das aktuelle Element als Aggregat zurückzugeben. Dies hat den zusätzlichen Vorteil, dass Sie die Sammlung nur einmal durchlaufen:

%Vor%     
fcuesta 29.07.2013 20:12
quelle
7

Als Alternative zu einer Lösung, die LINQs Zip -Enumerator verwendet, bei dem Sie zweimal über Ihre Liste iterieren müssen, gibt es einen benutzerdefinierten LINQ-Operator, der über eine Sequenz iteriert und ein "moving pair" von Elementen zurückgibt:

%Vor%

Sie könnten es dann wie folgt auf Ihre DateTime Sequenz anwenden:

%Vor%     
stakx 29.07.2013 19:59
quelle
4

Sie können die Incremental Erweiterungsmethode von moreLINQ Bibliothek:

%Vor%

Es macht genau das, was Sie brauchen:

%Vor%     
MarcinJuraszek 29.07.2013 19:43
quelle

Tags und Links