我有一堆DataTables
需要轉換爲object[,]
陣列(而不是object[][]
陣列)。在性能方面做什麼最有效的方法是什麼?什麼是將DataTable轉換爲對象的最有效方法[,]?
我知道我可以通過最初構建我的object[dt.Rows.Count, dt.Columns.Count]
來完成此操作,然後遍歷行並將每行解析到數組中的某個位置,但我確信還有其他方法,如使用Linq或System.Data特定諸如dataRow.ToItemArray()
之類的特徵可能更有效。
我的DataTables
是可變大小的,並且包含日期和數字,除了字符串之外,還需要適當格式化。
例如,如果我的數據表中的一個包含
Id Name Date Value 1 Rachel 1/1/2013 00:00:00 100.0000 2 Joseph 3/31/2012 00:00:00 50.0000 3 Sarah 2/28/2013 00:00:00 75.5000
然後我希望的object[,]
陣列包含完全相同的數據(理想地與頭),而是用格式的日期和值
arr[x,0] = row[x].Field<int>("Id");
arr[x,1] = row[x].Field<string>("Name");
arr[x,2] = row[x].Field<DateTime>("Date").ToString("M/d/yy");
arr[x,3] = row[x].Field<decimal>("Value").ToString("C2"); // Currency format
使用LINQ不會奇蹟般地加快東西。 – 2013-04-04 13:54:38
通過「更高效」,您是否希望改進算法的時間複雜度(如O(n^2)到O(n)),還是隻是一個常數因子改進? – mbeckish 2013-04-04 13:55:18
爲什麼你不在帖子中包含「之前」和「之後」的數據? – 2013-04-04 13:59:04