我有object[,] myObj
。我也有string[] fieldTypes
。我想将对象数组中的数据导入DataTable。
我希望DataTable列的类型正确,即string
,datetime
,double
等。这是fieldTypes
数组的来源。< / p>
让我先从一个基本的例子开始:
myObj
有n行3列。 fieldTypes
将是一个长度为3的数组(即与myObj
相同的列数)
我们说
fieldTypes = {'string', 'DateTime', 'double' }
有没有办法使用DataTable
设置我的fieldTypes
以获得正确的列?
下面的内容(我知道下面写的内容不正确)
DateTable dt = new DataTable();
for(int i=0; i < fieldTypes.Length; i++)
{
dt.Columns.Add(myColName, typeof(fieldTypes[i]));
}
然后我需要在myObj
中投放值,以便将它们添加到我的DataTable
。这可能吗?
答案 0 :(得分:0)
您需要指定列名和类型。考虑到您已将类型名称映射到类型。
我使用列规范类,如:
class ColSpec
{
public Type Type { get; set; }
public string Name { get; set; }
}
和锯齿状数组而不是多维数组,可让您更轻松地添加行,无需强制转换。
var colspecs = new ColSpec[] {
new ColSpec { Type = typeof(int), Name = "int" },
new ColSpec { Type = typeof(string), Name = "string" } };
var dt = new DataTable();
dt.Columns.AddRange (colspecs.Select(x=> new DataColumn(x.Name, x.Type) ).ToArray()) ;
// single row jagged array
object[][] myObj = new object[1][];
// 2 colums per row
myObj[0] = new object[2] {100, "string"};
foreach (object[] objs in myObj)
dt.Rows.Add(objs);