IOrderedQueryable——指定的类型转换无效
本文关键字:类型转换 无效 IOrderedQueryable | 更新日期: 2023-09-27 18:07:47
当我尝试迭代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()
似乎在您的Results
表中,您有一列应该是DBContext
级别的Int32
,但其中的一些值不能转换为Int32
。确保您的DBContext
匹配表定义。
问题似乎出在r.BugId
部分。
Result
的代码似乎表明它是int
,但从数据库返回的值不是(可能是null
?)。因此,您将收到此错误消息。
检查BugId
在数据库中是否确实是整数,如果不是,并且Result
是通过代码生成的,尝试重新生成。