2010-08-26 101 views
5

我使用linq來加載一個csv文件,但由於csv可能有任何數量的列,它返回的對象將需要動態屬性,我無法弄清楚怎麼做。在C#中使用動態屬性創建一個對象#

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

如果可能的話,我想通過命名CSV文件中給出,而不是FIELD1,FIELD2的名稱等

感謝屬性!

回答

7

以後你會怎麼做?如果您知道其他地方的名稱並且您使用的是.NET 4,則可以使用使用ExpandoObject - 將其作爲字典使用,然後使用動態分類訪問屬性名稱。但如果它是全部動態(即你什麼都不知道靜態任何地方),爲什麼不使用Dictionary<string, string>

+0

你知道,如果ExpandoObject將支持智能感知?假設我返回基於字典的ExpandoObject,該對象是否支持智能感知,以便我可以看到屬性名稱的建議? – Joze 2015-06-30 12:31:11

+1

@Joze:不在編譯時,沒有。我相信有調試器支持。 – 2015-06-30 12:36:15