2010-08-26 6 views
5

Je LINQ pour charger un fichier csv, mais parce que le csv peut avoir un certain nombre de colonnes, l'objet qu'il retourne aura besoin des propriétés dynamiques, et je ne peux pas comprendre comment faire ça.Création d'un objet avec des propriétés dynamiques 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 possible, je voudrais nommer les propriétés par le nom donné dans le fichier csv, plutôt que champ1, champ2, etc.

Merci!

Répondre

7

Que feriez-vous après? Si vous connaissez les noms ailleurs et que vous utilisez .NET 4, vous pouvez utiliser ExpandoObject - le remplir en l'utilisant comme un dictionnaire, puis accéder aux noms de propriétés à l'aide de la suite typage dynamique. Mais si c'est tous dynamique (c'est-à-dire que vous ne savez rien de statique n'importe où), pourquoi n'utilisez-vous pas simplement Dictionary<string, string>?

+0

Savez-vous si le ExpandoObject soutiendrait IntelliSense? Dire que je renvoie un ExpandoObject basé sur un dictionnaire, est-ce que cet objet supporterait intellisense afin que je puisse voir les noms de propriété suggérés? – Joze

+1

@Joze: Pas au moment de la compilation, non. Je crois que le support du débogueur existe. –

Questions connexes