2010-08-26 95 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