c#IEnumerable DataRow int字段转换问题

时间:2017-02-17 00:32:53

标签: c# sql-server-2008 exception oracle11g casting

我们有一个兼容Oracle和MsSql dbs的应用程序。 LocationId字段在MsSql db中为<int>,在Oracle db中为<number(10,0)>。当我将代码中的locationId转换为Int32时,它适用于MsSql环境并在Oracle中引发异常。当我将其转换为Int64时,它适用于Oracle并抛出&#34;无效的转换异常&#34;在MsSql环境中我知道我可以处理这件事。但我想知道是否有更好的方法来通过转换另一种可以处理这两种问题的类型来克服这个问题。任何建议表示赞赏。 THX。

IEnumerable<DataRow> dataTableByLoc = 
      from rowsByLoc in dTable.AsEnumerable()
       where rowsByLoc.Field<Int32>("locationID") == nextLocInfo.getLocationId()
      select rowsByLoc;

ERROR:

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()

0 个答案:

没有答案