System.InvalidCastException:指定的强制转换无效.错误

use*_*042 11 c# mysql linq asp.net

我在一个C#ASP.NET项目上.

我有一个带有userid字段类型的MySQL表int.

现在我想使用LINQ获取userid的值等于某个值的行数.

为此,我编写了以下方法:

public int getCount(int usercode) {
    int count = 0;
    DataTable mytable = getAllRowsAndReturnAsDataTable(); // assigning a DataTable value to mytable. 
    if (mytable.Rows.Count > 0) { 
        count = (from x in mytable.AsEnumerable() where x.Field<Int32>("userid") == usercode select x).Count();
    } 
    return count;
}
Run Code Online (Sandbox Code Playgroud)

但它System.InvalidCastException: Specified cast is not valid.显示count = (from x in mytable.AsEnumerable() where x.Field<Int32>("userid") == usercode select x).Count();在红色高亮区域显示错误.

我不知道我在这里做错了什么.请帮忙.

Jar*_*Par 10

最可能的原因InvalidCastExceptionx.Field<Int32>("userid")线.如果数据的实际类型与传递的类型不匹配,则Field<T>扩展方法将抛出.因此,如果不是这将抛出.InvalidCastExceptionField<T>useridInt32

编辑

根据您的评论,userid实际上是UInt32不是Int32.这就是导致问题的原因.尝试使用以下内容,它应该工作

x.Field<UInt32>("userid")
Run Code Online (Sandbox Code Playgroud)