我有一个自定义类的列表,其中包含double,string等类型的各种变量.
为了使用Excel DNA将其返回到excel,我需要将列表转换为object[,].
这是我做的,但有更好的方法吗?如果我添加另一个变量,我需要记住重做列数等.
List<customclass> BMrep = somefunction();
var retdata = new object[BMrep.Count,22];
for (int i = 0; i < BMrep.Count; i++)
{
retdata[i, 0] = BMrep[i].product_code;
retdata[i, 1] = BMrep[i].RG;
...
}
return retdata;
Run Code Online (Sandbox Code Playgroud)
您可以使用反射来获取属性:
var properties = typeof(customclass).GetProperties(BindingFlags.Public |
BindingFlags.Instance).OrderBy(x => x.Name).ToList();
List<customclass> BMrep = somefunction();
var retdata = new object[BMrep.Count, properties.Count];
for (int i = 0; i < BMrep.Count; i++)
{
for (int j = 0; j < properties.Count; j++)
{
retdata[i, j] = properties[j].GetValue(BMrep[i], null);
}
}
return retdata;
Run Code Online (Sandbox Code Playgroud)