Linq和Oracle发生了奇怪的强制转换错误

时间:2010-09-24 01:03:10

标签: c# sql linq oracle lambda

我在Linq中遇到一个使用Oracle填充的DataTable的强制转换错误。

bool isTrue = DataTable.AsEnumerable().Any
      (x => x.Field<int>("MYNUMBERFIELD") == MYNUMBER);

在SQL中,这可以正常工作。在Oracle中失败并且在强制转换中出现了强制转换错误。在C#代码中,当您执行以下操作时会发生同样的事情:

int myint = (int)VariableRetrievedFromOracleDB;

如果您将其更改为int myint = Convert.ToInt32(VariableRetrievedFromOracleDB),则可以正常使用。

有关如何使用lambda处理此问题的任何想法吗?

1 个答案:

答案 0 :(得分:2)

bool isTrue = 
    DataTable.AsEnumerable()
             .Any(x => Convert.ToInt32(x.Field("MYNUMBERFIELD")) == MYNUMBER);