Знаете ли вы структуру DataTable
и типизированный объект заранее? Вы можете использовать делегата, чтобы сделать отображение. Если вы этого не сделаете (т. Е. Все, что вам известно, это Type
и свойства), то есть способы ускорения динамического доступа к элементу (например, HyperDescriptor
).
В любом случае, рассмотрим блок итератора; таким образом, вам не нужно буферизовать объекты весь второй раз; конечно, если вы имеете дело только с небольшими счетчиками строк, это не проблема.
Можете ли вы уточнить какие-либо из этих пунктов? Я могу добавить гораздо больше деталей ...
Самое простое, что не так с:
DataTable table = new DataTable {
Columns = {
{"Foo", typeof(int)},
{"Bar", typeof(string)}
}
};
for (int i = 0; i < 5000; i++) {
table.Rows.Add(i, "Row " + i);
}
List<MyType> data = new List<MyType>(table.Rows.Count);
foreach (DataRow row in table.Rows) {
data.Add(new MyType((int)row[0], (string)row[1]));
}
(проблемы, описанные выше, могут направить правильный подход ...)