Automatisches Inkrementieren einer generischen Liste mit LINQ in C #

8

Gibt es eine gute Möglichkeit, beim Projizieren von Elementen mit LINQ eine Indexspalte für den "automatischen Inkrement" -Stil (ab 1..x) bereitzustellen?

Als ein grundlegendes Beispiel suche ich nach der Indexspalte unten, um von 1 bis zur Anzahl der Elemente in der Liste zu gehen.

%Vor%

Das Durchlaufen der Liste wäre die einfache Option, aber ich frage mich, ob es einen besseren Weg dafür gibt?

    
Nick 14.10.2011, 08:21
quelle

2 Antworten

13

Dies ist mit LINQ-Ausdrücken nicht möglich. Sie können jedoch die folgende Erweiterungsmethode .Select verwenden:

%Vor%     
Darin Dimitrov 14.10.2011, 08:23
quelle
7

Sie können die Überladung von Select verwenden, die die Bereitstellung des Index für die Projektion:

%Vor%

Beachten Sie, dass für diese Überladung kein Abfrageausdruck unterstützt wird. Wenn Sie die Werte tatsächlich aus einer Datenbank holen (es ist nicht klar, ob list wirklich ein List<T> ist), sollten Sie wahrscheinlich sicherstellen, dass Sie eine angemessene Reihenfolge haben, da die Ergebnisse sonst etwas willkürlich sind.

    
Jon Skeet 14.10.2011 08:24
quelle

Tags und Links