在C#中使用动态属性创建对象

时间:2010-08-26 11:19:22

标签: c# linq dynamic object

我正在使用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等。

谢谢!

2 个答案:

答案 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