2010-08-26 19 views
5

Ich verwende Linq, um eine CSV-Datei zu laden, aber da die CSV eine beliebige Anzahl von Spalten haben kann, das Objekt, das es zurückgibt, dynamische Eigenschaften benötigen, und ich kann nicht herausfinden wie geht das.Erstellen eines Objekts mit dynamischen Eigenschaften in C#

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

Wenn möglich, würde Ich mag die Eigenschaften mit dem Namen in der CSV-Datei angegeben nennen, anstatt Feld1, Feld2 usw.

Dank!

Antwort

7

Was würden Sie danach machen? Wenn Sie die Namen an anderer Stelle kennen und .NET 4 verwenden, können Sie verwenden ExpandoObject - füllen Sie es aus, indem Sie es als Wörterbuch verwenden, und greifen Sie später auf die Eigenschaftsnamen zu. Aber wenn es ist alle dynamisch (d. H. Sie wissen nichts statisch irgendwo), warum verwenden Sie nicht einfach Dictionary<string, string>?

+0

Wissen Sie tun, wenn die ExpandoObject intellisense unterstützen würde? Angenommen, ich gebe ein ExpandoObject basierend auf einem Wörterbuch zurück, würde dieses Objekt intellisense unterstützen, damit ich die vorgeschlagenen Eigenschaftsnamen sehen kann? – Joze

+1

@Joze: Nicht zur Kompilierzeit, nein. Ich glaube, dass es Debugger-Unterstützung gibt. –

Verwandte Themen