繁体   English   中英

筛选可能位于int32或int64列的DataTable时,指定的强制转换无效

[英]Specified cast is not valid when filtering a DataTable where the column can be int32 or int64

因此,根据提供的列名和过滤器对数据表进行即时过滤。 我已将过滤器指定为Int64,以便它可以支持Int32和Int64过滤器值。

以下是用于执行过滤的代码。

private DataTable FilterDataTableByInt(DataTable dt, string columnName, Int64 filter)
{
    DataTable Newdt = new DataTable();

    if (dt != null && dt.Rows.Count > 0)
    {
        var result = (from myRow in dt.AsEnumerable()
                      where myRow.Field<Int64>(columnName) == filter
                      select myRow);

        Newdt = result.AsDataView().ToTable();
    }

    return Newdt;
}

现在,当im过滤依据的列为Int64值时,此方法可以很好地工作。 但是,如果列是Int32,我会得到强制转换异常。 myRow.Field<Int64>(columnName)区域中的异常

知道如何重写它以支持DataTable中的Int32和Int64列类型吗?

尝试Convert.ToInt64

from myRow in dt.AsEnumerable()
where Convert.ToInt64(myRow[columnName]) == filter
select myRow

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM