c#IEnumerable DataRow int字段强制转换问题

c#IEnumerable DataRow int字段强制转换问题,c#,sql-server-2008,exception,oracle11g,casting,C#,Sql Server 2008,Exception,Oracle11g,Casting,我们有一个与Oracle和MsSql dbs兼容的应用程序。LocationId字段在MsSql数据库中为,在Oracle数据库中为。当我在代码中将locationId转换为Int32时,它在MsSql环境下工作,并在Oracle中引发异常。当我将其强制转换为Int64时,它对Oracle有效,并在MsSql env中抛出“无效强制转换异常”。我知道我能应付。但我想知道有没有更好的方法来克服这个问题,铸造另一种类型,可以处理这两个问题。如有任何建议,我们将不胜感激。thx IEnumerable

我们有一个与Oracle和MsSql dbs兼容的应用程序。LocationId字段在MsSql数据库中为
,在Oracle数据库中为
。当我在代码中将locationId转换为
Int32
时,它在MsSql环境下工作,并在Oracle中引发异常。当我将其强制转换为
Int64
时,它对Oracle有效,并在MsSql env中抛出“无效强制转换异常”。我知道我能应付。但我想知道有没有更好的方法来克服这个问题,铸造另一种类型,可以处理这两个问题。如有任何建议,我们将不胜感激。thx

IEnumerable<DataRow> dataTableByLoc = 
      from rowsByLoc in dTable.AsEnumerable()
       where rowsByLoc.Field<Int32>("locationID") == nextLocInfo.getLocationId()
      select rowsByLoc;
IEnumerable dataTableByLoc=
来自dTable.AsEnumerable()中的rowsByLoc
其中rowsByLoc.Field(“locationID”)==nextLocInfo.getLocationId()
选择rowsByLoc;
错误:

16-02-2017 15:24:06 ERROR [MFES.Log] Error running export    at System.Data.DataRowExtensions.UnboxT`1.ValueField(Object value)
   at MFES.Plugins.GYG.DailyExports.GYGDailyExportMain.<>c__DisplayClass15_0.<exportTableByLocation>b__0(DataRow rowsByLocation)
   at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
16-02-2017 15:24:06错误[MFES.Log]在System.Data.DataRowExtensions.Unbox`1.ValueField(对象值)上运行导出时出错
在MFES.Plugins.GYG.dailyExportMain.GYGDailyExportMain.c_uDisplayClass15_0.b_u0(DataRow rowsByLocation)
位于System.Linq.Enumerable.WhereEnumerableInterator`1.MoveNext()

我不确定这个问题的确切解决方案,但您可以避免它。你有什么特别的原因需要做一个计算吗?您可以使用DataTable上的
Select
方法筛选表。这将为您提供筛选行数组。@ChetanRanpariya感谢您的选择。我是一名java开发人员,对c#有很好但不是很深入的了解。浏览时,我的搜索中没有出现此方法。谢谢你的评论,效果很好。不知道如何相信你的评论。让我知道。我很高兴你的问题得到解决。不用担心信用。编码快乐!!!!