当我尝试迭代IOrderedQueryable对象时,我得到一个InvalidCast异常,如下所示。
感谢任何帮助:
IOrderedQueryable<Result> rs =
from res in db.Results
orderby res.Id
select res;
if (rs != null)
{
IEnumerator<Result> enumerator = rs.GetEnumerator();
try
{
while (enumerator.MoveNext())
{
Result r = enumerator.Current;
Console.WriteLine(r.BugId);
}
}
}
运行时错误:
System.InvalidCastException was unhandled
HResult=-2147467262
Message=Specified cast is not valid.
Source=System.Data
StackTrace:
at System.Data.SqlClient.SqlBuffer.get_Int32()
at System.Data.SqlClient.SqlDataReader.GetInt32(Int32 i)
at Read_Result(ObjectMaterializer`1 )
at System.Data.Linq.SqlClient.ObjectReaderCompiler.ObjectReader`2.MoveNext()
答案 0 :(得分:1)
问题似乎出现在r.BugId
部分。
Result
的代码似乎表明它是int
,但数据库返回的值不是(可能是null
?)。因此,您收到此错误消息。
检查BugId
是否确实是数据库中的整数,如果没有,并且通过代码生成Result
,请尝试重新生成。
答案 1 :(得分:1)
似乎在您的Results
表格中,您的列在Int32
级别上应该是DBContext
,但其中的某些值无法转换为{{1} }。确保您的Int32
与表定义相匹配。也许你忘了在一些表架构更改后更新它......