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()

IOrderedQueryable——指定的类型转换无效

似乎在您的Results表中,您有一列应该是DBContext级别的Int32,但其中的一些值不能转换为Int32。确保您的DBContext匹配表定义。

问题似乎出在r.BugId部分。

Result的代码似乎表明它是int,但从数据库返回的值不是(可能是null ?)。因此,您将收到此错误消息。

检查BugId在数据库中是否确实是整数,如果不是,并且Result是通过代码生成的,尝试重新生成。