DataTable.Select使用小心得

最近在博客园代码的重构中, 我发觉用DataTable.Select进行XML数据的查询也是挺方便的。
比如我们根据Url中参数值查询XML数据中相应节点的数据。
假如我们有这样的Xml数据文件Catalog.xml:

<Navigation>
      <Catalog title="非技术区" url="default.aspx?cate=2" rss="MainFeed.aspx?cate=2" visible="true"  cate="2"/>
      <Catalog title="转载区" url="default.aspx?cate=7" rss="MainFeed.aspx?cate=7"  visible="true"  cate="7"/>
</Navigation>


通过DataTable.Select查询Xml数据的方法是:

DataSet myds=new DataSet();
myds.ReadXml("Catalog.xml");
if(Request.QueryString["cate"]!=null)
          {
                querystr="cate="+Request.QueryString["cate"];
          }
                     
DataRow[] row=myds.Tables[0].Select(querystr);
if(row.Length>0)
          {
                url=row[0]["url"].ToString();
          }


一开始我用上面的方法查询能得正确的结果,但当Catalog.xml某个节点的cate>10时,比如cate=10, 通过myds.Tables[0].Select("cate=10")就查询不到cate=10的节点。一开始百思不得其解, 因为我认为cate在myds中是被作为int类型处理的。后来,我想到是不是当cate变成两位数时, DataSet把cate作为字符串处理?我将代码改成:
    querystr="cate='"+Request.QueryString["cate"]+"'";
问题就解决了。

友情提示:此文并不表示本站肯定持有相同观点,转载请注明出处。
 您可能对 [ADO.Net] 的这些文章也感兴趣:

对比.NetPetShop和Duwamish来探讨Ado.Net的数据库编程模式  微软发布Astoria项目的十二月份CTP版
ADO.NET入门(1)  用VisualC#访问DB2数据库
一步一步体验 ADO.NET Entity Framework:第一步  Datagrid导出当前页和全部页为EXCEL文件的解决方案
在ADO.NET数据集中浏览多个相关表(6)  DataTable,DataView和DataGrid中一些容易混淆的概念
通过DataTable获得表的主键  通过VisualC#.NET建一个DTS任务
ADO.NET与PowerBuilder  如何将一个超级链接列绑定多个字段
亲密接触ADO.NET2.0  在ADO.NET数据集中浏览多个相关表(5)
ADO.NET入门(3)  SQL Server 2005 - 实作CLR存储过程
用C#和ADO.NET建立一个数据绑定网格  如何把一个DataTable中的某列通过表关系加到另外一个DataTable中
ADO.NET Entity Framework 体验:概念模型  在ADO.NET数据集中浏览多个相关表(4)