Bestimmen Sie die Position eines Elements in einem IQueryable

8

Ich habe ein IQueryable, das nach einer Bedingung geordnet ist. Jetzt möchte ich die Position eines bestimmten Elements in diesem IQueryable wissen. Gibt es einen linq-Ausdruck, um das zu bekommen? Angenommen, es gibt 10 Elemente in IQueryable und das 6. Element entspricht einer Bedingung, ich möchte die Zahl 6 erhalten.

    
San 08.12.2009, 19:33
quelle

3 Antworten

13

Wählen Sie zuerst jedes Element mit seinem Index aus, filtern Sie dann die Elemente und extrahieren Sie schließlich den ursprünglichen Index:

%Vor%

Testbett:

%Vor%

Ausgabe:

%Vor%     
Mark Byers 08.12.2009, 19:47
quelle
2

Sie könnten etwas wie query.TakeWhile(x => !matchesCondition(x)).Count() verwenden, obwohl das die obigen Werte auflistet, die möglicherweise nicht Ihren Vorstellungen entsprechen.

    
C. A. McCann 08.12.2009 19:44
quelle
0

Sie können auch die Verson der Funktion "Where" verwenden, die den Auflistungsindex als Parameter für die Prädikatfunktion enthält. Weitere Informationen finden Sie MSDN .

%Vor%

Die Version könnte zu einer leeren Liste führen, wenn kein sechstes Element vorhanden ist. Auch dies wertet die WHERE-Klausel nicht aus, bis Sie über das Ergebnis iterieren.

    
Jason 08.12.2009 22:57
quelle

Tags und Links