C# Where 子句中的 Cast Exception

Cast Exception in C# Where clause

我已经有一段时间没有尝试弄清楚是什么导致了这种情况下的转换异常。以下是我的代码。

var ratingTermDetails = dtRating.AsEnumerable()
    .Where(data => data.Field<int>("RATINGID") == ratingId)
    .FirstOrDefault();

dtRating 是从数据库 (oracle) 中填充的数据表。 Ratingid 列的数据类型在数据库中为 Integer,并且该列不可为空。变量ratingId也是一个整数。

我不知道这有多大帮助,因为我以前从未见过类似的 Linq。但据我了解,您是说 RATINGID 在数据库中是 int 并且它是主键?

那么这应该可以工作。

var ratingTermDetails = dtRating
    .Where(data => data.Field.RATINGID == ratingId)
    .FirstOrDefault();

正如@MarcGravell 所说,变量在 C# 中被转换为 System.Decimal。更改为我的代码后工作。