Зависит от того, что вы собираетесь делать с данными.Если данные будут доступны только для чтения, вы можете определить List и установить его в качестве ItemsSource для сетки данных.Затем сетка данных автоматически создаст все строки для представления элементов в списке.
Если вы хотите манипулировать данными, вы можете использовать BindingList <> или ObservableCollection <>.
Как это"создает объект для каждой строки" излишним?Вы должны представить строку / строку данных как объект.Это просто здравый смысл, иначе это сделать невозможно.
По сути, если производительность - это то, что вам нужно, то ItemSource таблицы данных должен быть как можно более легким.DataTable может быть излишним, если вы не собираетесь использовать все его функции.Список <>, с другой стороны, настолько легок, насколько это возможно.
Также обратите внимание, что сетка данных WPF по умолчанию использует виртуализацию, что также способствует повышению производительности.Существуют некоторые предостережения, например, не помещайте сетку данных в стековую панель, иначе эффект виртуализации исчезнет - вы можете узнать об этом в Google.
И последнее, по моему опыту, встроенная сетка данных .NET4 WPF имеетсерьезная ошибка дизайна.В основном каждый DataGridRow потребляет 1 МБ памяти даже для самых простых данных.С виртуализацией и отображением только 30 строк, это не слишком большая проблема - потребляется всего 30 МБ памяти.Но возьмите тысячу строк, отключите виртуализацию и потребление памяти составит 3 ГБ !!!!Напротив, сетевое представление данных WinForm потребляет в 10 раз меньше памяти с теми же данными.Даже если виртуализация отключена, тысяча строк занимает всего 30 МБ ...
Я обнаружил ошибку в Connect, но специализированные эксперты еще не изучили эту проблему.Не уверен, что сетка данных инструментария WPF ведет себя лучше ...