2010-08-26 21 views
5

Estoy usando linq para cargar un archivo csv, pero como el csv puede tener cualquier cantidad de columnas, el objeto que devuelve necesitará propiedades dinámicas, y no puedo entenderlo como hacer eso.Creando un objeto con propiedades dinámicas en C#

var data = from row in csvData 
     let col = row.Split(',') 
     select new 
       { 
        Field1 = data[0], 
        Field2 = data[1], 
        Field3 = data[2] // etc, etc 
       }; 

Si es posible, me gustaría nombrar las propiedades por el nombre dado en el archivo csv, en lugar de campo1, campo2, etc.

Gracias!

Respuesta

7

¿Qué harías con esto luego? Si conoce los nombres en otro lugar y está utilizando .NET 4, podría usar ExpandoObject - poblarlo usándolo como un diccionario, y luego acceder a los nombres de las propiedades usando la escritura dinámica más tarde. Pero si es todo dinámico (es decir, usted no sabe nada estáticamente en ninguna parte), ¿por qué no solo usa Dictionary<string, string>?

+0

¿Conoce si el ExpandoObject apoyaría intelisense? Digamos que devuelvo un ExpandoObject basado en un diccionario, ¿ese objeto sería compatible con intellisense para que pueda ver los nombres de propiedad sugeridos? – Joze

+1

@Joze: no en tiempo de compilación, no. Creo que hay soporte para depuradores sin embargo. –

Cuestiones relacionadas