[英]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.