2 Stimmen

Rückgabe des Index in Enumerable Select

Ich habe eine List<MyClass> mit 2 Elementen, die eine SequenceNumber-Eigenschaft haben.

Wenn ich diesen Code unten verwende, ist der zurückgegebene Index 0 und nicht 1:

var test = TrackingCollection
                .Where(x =>  x.SequenceNumber == 2)
                .Select((item, index) =>
                                    new
                                    {
                                         index, item.SequenceNumber
                                    });

Ist dies, weil das bezieht sich auf 0 als der Index in meinem neuen anonymen Typ oder ist es einige Null-Index-basierte Seltsamkeit, die ich gerade inkrementieren müssen.

Was ich bin nach ist der Index in TrackingCollection zurückgeben, wo die Sequenznummer 2 oder 887 oder jede andere richtige Index in der ursprünglichen Sammlung ist ...

4voto

Gabe Punkte 82268

Ihr Problem scheint das Filtern der Liste vor der Indizierung zu sein. Sie müssen filtern, nachdem Sie den Index erstellt haben. Fügen Sie die Where-Klausel einfach später ein:

var test = TrackingCollection 
            .Select((item, index) => 
                                new 
                                { 
                                     index, item.SequenceNumber 
                                })
            .Where(x =>  x.SequenceNumber == 2);

0voto

Andrey Punkte 57704

Warum sollte sie nicht gleich Null sein? Die Indizes der C#-Sammlungen sind standardmäßig nullbasiert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X