我試圖記錄從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();
}
我也試圖與ObservableCollection<ColumnItems> dataDetails
更換var dataDetails
但同樣沒有運氣失敗。我最終發現上述例外的資源非常少,並且不能收集太多的知識來解決這個例外。我如何填寫數據到我的ObservableCollection<T>
?
讀者。廣播()拋出異常 –
Steve
Nope @Steve ..沒有例外,但是'DataList = new ObservableCollection(dataDetails);''拋出異常.. –
它因爲linq延遲執行。它在使用之前不會被執行。你可以嘗試reader.Cast().ToList()它應該拋出你看到的相同的異常 –
Steve