DataTable select方法已将字符串更改为DBNull

时间:2019-04-15 06:52:41

标签: c#

数据表具有字符串类型的值。

当我使用select方法时,所选行具有{} DBNull而不是string

我的代码:

  dtGo.Rows.InsertAt(_drGo, 0);
  string _filter = "CODE = '" + _code + "'";
  DataRow[] _drArray = dtGo.Select(_filter);

在调试时,变量如下所示

   dtGo.Rows[0]  
     ItemArray    
       [3]  "151453" object{string}
   _drArray[0].ItemArray
     [3]  {}       object{System.DBNull}

我多次使用选择方法。但是这种情况,我不知道。 请告诉我为什么select将字符串值更改为DBNull。

2 个答案:

答案 0 :(得分:0)

列的类型(CODE)为整数。可以从您的观察值中看到

 dtGo.Rows[0]  
   ItemArray    
     [3]  "151453" object{int}

因此,您需要比较一个整数值而不是字符串。试试

  dtGo.Rows.InsertAt(_drGo, 0);
  string _filter = "CODE = " + _code ;
  DataRow[] _drArray = dtGo.Select(_filter);

如果此列的类型应为字符串,请检查表定义。

答案 1 :(得分:0)

感谢您的回答。

但是请注意_drArray是过滤的结果。 如果filter有问题,我将无法获得_drArray。

我想知道的是为什么select方法缺少某个列的值的原因。

您可以看到数据表dtGo和选定的_drArray行的列[0],[1],[2]的值相同。 但没有列[3]。

151453已经存储在数据表中。并且已经过滤到_drArray。 因此,我可以看到[0],[1],[2]列具有值。

ps。我的代码中有一些韩语。因此,我重新输入了变量名。也许这让您感到困惑。过滤列名称是另一个,现在有问题。