2011-02-15 13 views
6

Tengo una consulta linq que devuelve una lista de MyObject. Me gustaría agregar una propiedad a MyObject llamada TheIndex y que contiene la ordenada del elemento en la secuencia.agregando índice al resultado de consulta de linq

En otras palabras, necesito algo como esto:

var TheResult = from d in MyDataContext 
       where..... 
       select new MyObject 
       { 
        Property1 = d.whatever, 

        TheIndex = ? 

       } 

La consulta devuelve una lista de MiObjeto y me gustaría que cada elemento de la lista para contener el índice como una de sus propiedades.

Gracias.

+0

duplicado posible de [¿Cómo agregar un campo de índice de resultados Linq] (http://stackoverflow.com/questions/269058/how-do-you-add-an-index-field-to- linq-results) –

Respuesta

14

Una vez que se aleje de la sintaxis de la consulta, encontrará una sobrecarga Select que le proporciona el índice que está buscando.

var result = MyDataContext 
    .Where(d => d.Prop == "A") 
    .AsEnumerable() 
    .Select((d, i) => 
     new MyObject() { 
     Property1 = d.whatever, 
     TheIndex = i 
    }); 
+0

justo antes de la instrucción select, hay un error en el paréntesis: un cuerpo de consulta debe terminar con una cláusula select o una cláusula group. – frenchie

+1

Sí, lo arreglé. Simplemente abandone la sintaxis de la consulta por completo y vaya con la sintaxis del método, como lo hice ahora. –

+0

No obtengo ningún intellisense cuando convierto a la sintaxis del método: ¿lo estoy haciendo mal? En la sintaxis de consulta, tenía var Output = from d en MyDC.Table1 donde d.UserID == TheUserId donde d.Date == TheDate.Date seleccionaba el nuevo Model {...}. – frenchie

Cuestiones relacionadas