dt是一个datable,从一个比较复杂的xml获取的其中一个节点,结构如下(用gridview输出查看):
id name image
1 好开心 ~/Images/Front/Face/1/1.gif
2 好难过 ~/Images/Front/Face/1/2.gif
3 好伤心 ~/Images/Front/Face/1/3.gif
4 要唱歌 ~/Images/Front/Face/1/4.gif
5 正哭泣 ~/Images/Front/Face/1/5.gif
6 很满意 ~/Images/Front/Face/1/6.gif 极度奇怪的问题如下:DataRow[] rows = dt.Select("id=1");
Response.Write(rows.Length); //正常,结果是1DataRow[] rows = dt.Select("id=2或大于2的数");
Response.Write(rows.Length); //结果是0!!!DataRow[] rows = dt.Select("id='2'");
Response.Write(rows.Length); //加了引号,又正常了,结果是1
但是第一行测试并没有加引号,输出也正常啊!!
id name image
1 好开心 ~/Images/Front/Face/1/1.gif
2 好难过 ~/Images/Front/Face/1/2.gif
3 好伤心 ~/Images/Front/Face/1/3.gif
4 要唱歌 ~/Images/Front/Face/1/4.gif
5 正哭泣 ~/Images/Front/Face/1/5.gif
6 很满意 ~/Images/Front/Face/1/6.gif 极度奇怪的问题如下:DataRow[] rows = dt.Select("id=1");
Response.Write(rows.Length); //正常,结果是1DataRow[] rows = dt.Select("id=2或大于2的数");
Response.Write(rows.Length); //结果是0!!!DataRow[] rows = dt.Select("id='2'");
Response.Write(rows.Length); //加了引号,又正常了,结果是1
但是第一行测试并没有加引号,输出也正常啊!!
string s=DataRow["id"].GetType().toString()
这样可以?DataRow[] rows = dt.Select("id=2");
这样不可以么?
dt.Columns.Add("ID", typeof(int));
DataTable dt = new DataTable();
dt.Columns.Add("ID", typeof(char));
dt.Rows.Add("1");
dt.Rows.Add("2");
dt.Rows.Add("3");
dt.Rows.Add("4");DataRow[] dr = dt.Select("ID='2'");//结果是1
//DataRow[] dr = dt.Select("ID=2");//结果是0
MessageBox.Show(dr.Length.ToString());第二种:
DataTable dt = new DataTable();
dt.Columns.Add("ID", typeof(int));
//dt.Columns.Add("ID", typeof(string));//int和string二者选其一,如果要排序的话,请注意选择int
dt.Rows.Add("1");
dt.Rows.Add("2");
dt.Rows.Add("3");
dt.Rows.Add("4");
DataRow[] dr = dt.Select("ID=2");//结果是1
//DataRow[] dr = dt.Select("ID='2'");//结果是1
MessageBox.Show(dr.Length.ToString());其实对比你就会发现,你的dt中id列的type设置成了char类型,不知我说的对否,见笑!~~~
现在已发现问题所在xml文件中,当id字段存在一位以上的数字时候,就会出现问题!如果只有1-9的ID值,就没问题,看来就是char类型类型的问题了