奇怪的DataTable行为

时间:2010-05-04 10:30:32

标签: vb.net datatable

我的代码中有一个奇怪的行为,我无法解释...... 我一直在努力,但我想知道这种行为的原因。

我的代码:

If dataset.Tables.Count > 0 Then
            Dim rows() As DataRow = dataset.Tables(0).Select("FileID = " + fileid.ToString)
            For Each row As DataRow In rows...

数据集中唯一的表是:

18  1   1   testpara42          
19  1   2   Para2               
23  2   1   Para1               
24  2   2   Para42   

colums的位置是:ParamID - FileID - ParaPos - Paravalue。

我想过滤它,以便我得到的唯一行是具有正确fileid的那些......

当选择字符串为“FileID = 1”时的结果是具有2行的数组...
一切都很好......

但过滤字符串“FileID = 2”将返回0行... 像“FileID<> 1”这样的过滤器会正确返回2行。

我真的无法解释这种行为,也许是社区之一。表确实有更多条目,但Filter字符串只适用于“FileID = 1”选项。

请原谅我糟糕的英语。

请向我解释我的错误。

2 个答案:

答案 0 :(得分:1)

FileID列的数据类型是什么?它是否可能是某种类型的字符串,其中包含2的字符串包含某种空格?

答案 1 :(得分:0)

它是从XML文件中读出来的。

<Table>
 <ParamID>18</ParamID>
 <FileID>1</FileID>
 <ParaPos>1</ParaPos>
 <ParaValue>testpara42 </ParaValue>
 </Table>
<Table>
 <ParamID>19</ParamID>
 <FileID>1</FileID>
 <ParaPos>2</ParaPos>
 <ParaValue>Para2 </ParaValue>
 </Table>
<Table>
 <ParamID>23</ParamID>
 <FileID>2</FileID>
 <ParaPos>1</ParaPos>
 <ParaValue>Para1 </ParaValue>
 </Table>
<Table>
 <ParamID>24</ParamID>
 <FileID>2</FileID>
 <ParaPos>2</ParaPos>
 <ParaValue>Para42 </ParaValue>
 </Table>

很抱歉将其发布为答案...将其评为不可读。 真正的DocSnuggles:)