Я пытаюсь конвертировать записи из MySqlDataReader
в ObservableCollection<T>
, но я всегда в конечном итоге, за исключением - Невозможно привести объект типа «System.Data.Common.DataRecordInternal» к типу «System.Data. IDataReader»Преобразование MySqlDataReader записей в ObservableCollection <T>
от Jon Skeet's answer over here и ссылаясь SLaks
комментарий в тот же ответ, я закончил писать ниже код, но до сих пор я не нашел, как я получаю это исключение.
ObservableCollection<ColumnItems> DataList;
using (MySqlCommand cmd = new MySqlCommand(_query))
{
await Global.currentConnection.OpenAsync();
cmd.Connection = Global.currentConnection;
MySqlDataReader reader = cmd.ExecuteReader();
var dataDetails = reader.Cast<IDataReader>().Select(x => new ColumnItems
{
col1 = x["col1"] is DBNull ? null : x["col1"].ToString(),
col2 = x["col2"] is DBNull ? null : x["col2"].ToString(),
col3 = x["col3"] is DBNull ? null : x["col3"].ToString(),
col4 = x["col4"] is DBNull ? null : x["col4"].ToString()
});
DataList = new ObservableCollection<ColumnItems>(dataDetails);
//Exception while assigning data
await Global.currentConnection.CloseAsync();
}
Я также попытался заменить var dataDetails
с ObservableCollection<ColumnItems> dataDetails
но опять не без везения. Я закончил тем, что нашел очень мало ресурсов для вышеупомянутого исключения и не смог собрать много знаний для решения этого исключения. Как я могу заполнить данные в своем ObservableCollection<T>
?
reader.Cast() выбрасывает это исключение –
Steve
Nope @Steve .. Никаких исключений, кроме 'DataList = new ObservableCollection (dataDetails);' is throwing exception .. –
его потому, что linq задерживает выполнение. он не выполняется до его использования. Вы можете попробовать reader.Cast() .ToList(), и он должен бросить то же исключение, которое вы видите –
Steve