Wie kann ich einen Zeilenindex während der iteration mit foreach wissen?

7

Wie kann ich den aktuellen Zeilenindex im nächsten Beispiel wissen?

%Vor%     
Luiscencio 08.10.2009, 22:14
quelle

11 Antworten

15

Ich habe eine Art MiscUtil , die dabei helfen kann - SmartEnumerable . Es ist ein dummer Name, aber es funktioniert :) Auf der Benutzungsseite finden Sie Details und wenn Mit C # 3 können Sie es noch einfacher machen:

%Vor%     
Jon Skeet 08.10.2009, 22:22
quelle
20

Sie müssen selbst einen erstellen

%Vor%

oder Sie können stattdessen einfach eine for-Schleife erstellen.

    
Joseph 08.10.2009 22:16
quelle
11

Wenn Sie Linq verwenden können, können Sie dies folgendermaßen tun:

%Vor%     
adrianbanks 08.10.2009 22:26
quelle
5

Du tust es tatsächlich nicht. Eine der Schönheiten mit foreach ist, dass Sie nicht die zusätzlichen Code-Handling erhöhen und überprüft die Länge.

Wenn Sie Ihren eigenen Index haben möchten, müssten Sie so etwas tun

%Vor%     
Filip Ekberg 08.10.2009 22:17
quelle
1
%Vor%     
Nick DeVore 08.10.2009 22:16
quelle
1

Bei einer Standard-foreach-Schleife ist das nicht möglich. Der einfachste Weg ist die Verwendung einer for-Schleife

%Vor%

Eine andere Option ist die Verwendung einer Erweiterungsmethode

%Vor%

...

%Vor%     
JaredPar 08.10.2009 22:17
quelle
1

Hey, es gibt einen viel schnelleren Weg, denke ich. Keine Iteration erforderlich! Deklarieren Sie zuerst eine statische Variable für das Friend RowID-Feld der DataRow:

%Vor%

Dann müssen Sie nur Folgendes tun:

%Vor%

Ich habe das nach dem Aussortieren oder Filtern nicht getestet. In meinem Fall muss ich das nicht tun, also funktioniert das.

    
toddmo 11.05.2012 16:40
quelle
1

Besser spät als nie ...

%Vor%     
Carpentweet 11.10.2017 09:06
quelle
0

Verwenden Sie entweder eine for-Schleife oder verwenden Sie eine Ganzzahl, gefolgt von:

%Vor%     
Erich 08.10.2009 22:16
quelle
0

Sie können die Standardschleife for verwenden, um den Index

zu erhalten %Vor%     
bendewey 08.10.2009 22:17
quelle
0

Während die Antwort von LFSR richtig ist, bin ich mir ziemlich sicher, dass .IndexOf für fast jede Sammlung / Liste die Liste auflisten wird, bis sie die passende Zeile findet. Bei großen DataTables könnte dies langsam sein.

Es könnte besser sein, für (i = 0; i & lt; temptable.Rows.Count; i ++) {...} über die Tabelle. Auf diese Weise haben Sie den Index, ohne eine Find-the-Index-Steuer zu erheben.

    
Yoopergeek 08.10.2009 22:18
quelle

Tags und Links