我正在使用linq加载csv文件,但因为csv可能有任意数量的列,它返回的对象将需要动态属性,我无法弄清楚如何做到这一点。
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等。
谢谢!
答案 0 :(得分:7)
之后你会怎么做?如果您知道其他地方的名称并且您使用的是.NET 4,则可以使用ExpandoObject
- 将其用作字典填充它,然后使用动态类型访问属性名称。但如果所有动态(即你在任何地方都不知道任何东西),你为什么不只使用Dictionary<string, string>
?
答案 1 :(得分:1)
你可以做的只是使用数组甚至是词典,但如果你想用动态做一些很酷的东西,请查看Clay
http://weblogs.asp.net/bleroy/archive/2010/08/18/clay-malleable-c-dynamic-objects-part-2.aspx