2011-08-25 7 views
5

Supongamos:LINQ elemento de proyección

var a = SomeCollection.OrderBy(...) 
       .Select(f => new MyType 
           { 
            counter = ? //I want counter value, so what first 
               //object have counter=1, second counter=2 
               //and so on 
            a=f.sometthing, 
            ... 
           }); 

¿Cómo se configura el valor del contador? ¿O prefiero iterar a después?

Respuesta

8

Utilice la sobrecarga de Select que le da el índice 0 basado en el elemento actual.

.Select((item, index) => new MyType 
      { 
       counter = index + 1, 
       a = item.Something 
+1

Esta sobrecarga está documentada en http://msdn.microsoft.com/en-us/library/bb534869.aspx – Reddog

+0

@Reddog, gracias, he agregado el enlace a la respuesta. –

+0

esto no funciona en linq para las entidades, aunque – ren

3

simplifica la captura de una variable:

int index = 1; 

var a = SomeCollection.OrderBy(...) 
     .Select(x => new MyType { counter = index++; }); 

El contador se incrementará a medida que cada iteración se llama.

+0

esto no funciona con linq a entidades tampoco – ren

Cuestiones relacionadas