2012-09-19 165 views
2

嘗試創建this linq語句時。我遇到了以下錯誤:無法將類型爲「System.Data.Common.DataRecordInternal」的對象強制類型爲「System.Data.IDataReader」

Unable to cast object of type 'System.Data.Common.DataRecordInternal' to type 'System.Data.IDataReader'

這是我每@SLaks promising answer做什麼。

List<TypeData> = reader.Cast<IDataReader>() 
    .Select(dr => new TypeData { Type = (string)dr["type"] })     
    .ToList(); 
+1

你可以發佈你的'TypeData'類的代碼結構? – jp2code

+0

另外,看起來你正在設置TypeData obj = xxx.ToList()。 – jp2code

回答

6

嘗試reader.Cast<DbDataRecord>reader.Cast<IDataRecord>代替:

IEnumerable<TypeData> typeData = reader.Cast<IDataRecord>() 
    .Select(dr => new TypeData { Type = (string)dr["type"] }); 

IDataRecord Interface

Provides access to the column values within each row for a DataReader, and is implemented by .NET Framework data providers that access relational databases.

+0

他還需要某種'SingleOrDefault'而不是'ToList'嗎? – jp2code

+0

這工作!謝謝...兩分鐘,直到我可以給你信用。 – capdragon

+0

@ jp2code:是的,我已經刪除了「ToList」,而是使用了「IEnumerable 」。 –

相關問題