Привязать сетку данных к читателю

Я хочу иметь возможность вводить SQL в текстовое поле и отображать результаты в таблице данных WPF. Я думал начать сSqlDataReaderи установите сетку данныхItemsSource читателю данных:

using (var cmd = conn.CreateCommand()) {
    cmd.CommandText = sql.Text;
    sqlResults.ItemsSource = cmd.ExecuteReader();
}

но это терпит неудачу со следующей ошибкой:Invalid attempt to call FieldCount when reader is closedЯ понимаю, что к тому времени WPF начинает читатьFieldCount свойство объекта строки,using блок уже вышел.

Поэтому я попытался использовать LINQ иToList, чтобы получить то, что сохранится в памяти:

sqlResults.ItemsSource = cmd.ExecuteReader().Cast().ToList();

но это только отображаетFieldCount» для каждой строки, которая, по-видимому, является единственным свойством, котороеDbDataRecord есть.

Некоторые решения, которые я рассмотрел:

Привязать к DataTable вместо DataReader? Но я нене нужны возможности редактирования.Выбрать каждую строку в структуре данных в памяти? Какую структуру данных я могу использовать? Я могу'• использовать анонимные типы, потому что имена и типы столбцов изменяются в зависимости от оператора SQL. Если я используюListКак сетка данных узнает, как генерировать столбцы для каждого объекта в списке?Создать собственный дескриптор типа? Это похоже на излишество.

Но я чувствую, что решение должно быть очень простым и легким. Я что-то упустил здесь?

Ответы на вопрос(2)

Ваш ответ на вопрос