我建了一个DataSet 加载了XML中的数据。
其中有个 表:Table1; Table1有字段ID。
当加到DataSet中后,ID的类型可能默认为string (当然XML文件中也没有定义类型,要是可以敬请指教),但是在写入XML文件时,我是把ID当int来处理的。这样,当我想取这个ID的最大值时。
table.Compute("max(ID)","")...
取了来后 9 比 10 大了。
求大家给个解决方案。

解决方案 »

  1.   

    构造Datatable时字段如何构造的?
      

  2.   

    首先 DataSet ds = DataSet.LoadXML("1.xml")
    DataTable table = ds.Tables["Table1"];这个时候要设置table 的类型已是不充许了,报表里有纪录的错误。
      

  3.   

    在DataSet里把表结构先建好再ReadXml,要以能把结构放xml里,在加载时自动构造就好。 
    由于表很多。
      

  4.   

    lz:有两个办法解决你的问题:1、设置DataTable中DataColumn的数据类型:DataType 。
       
       因为xml格式中数据的实际类型你是知道的。2、用XmlReader的ReadContentAs系列方法:   ReadContentAs  将内容作为指定类型的对象读取。  
       ReadContentAsBase64  读取内容并返回 Base64 解码的二进制字节。  
       ReadContentAsBinHex  读取内容并返回 BinHex 解码的二进制字节。  
       ReadContentAsBoolean  将当前位置的文本内容作为 Boolean 读取。  
       ReadContentAsDateTime  将当前位置的文本内容作为 DateTime 对象读取。  
       ReadContentAsDecimal  将当前位置的文本内容作为 Decimal 对象读取。  
       ReadContentAsDouble  将当前位置的文本内容作为双精度浮点数读取。  
       ReadContentAsFloat  将当前位置的文本内容作为单精度浮点数读取。  
       ReadContentAsInt  将当前位置的文本内容作为 32 位有符号整数读取。  
       ReadContentAsLong  将当前位置的文本内容作为 64 位有符号整数读取。  
       ReadContentAsObject  将当前位置的文本内容作为 Object 读取。  
       ReadContentAsString  将当前位置的文本内容作为 String 对象读取。  
       ReadElementContentAs  已重载。 读取当前元素,并将内容作为指定类型的对象返回。  
       ReadElementContentAsBase64  读取元素并对 Base64 内容进行解码。  
       ReadElementContentAsBinHex  读取元素并对 BinHex 内容进行解码。  
       ReadElementContentAsBoolean  已重载。 将当前元素值作为 Boolean 对象读取。  
       ReadElementContentAsDateTime  已重载。 读取当前元素并将内容作为 DateTime 对象返回。  
       ReadElementContentAsDecimal  已重载。 将当前元素值作为 Decimal 对象读取。  
       ReadElementContentAsDouble  已重载。 读取当前元素并将内容作为双精度浮点数返回。  
       ReadElementContentAsFloat  已重载。 将当前元素值作为单精度浮点数读取。  
       ReadElementContentAsInt  已重载。 读取当前元素并将内容作为 32 位有符号整数返回。  
       ReadElementContentAsLong  已重载。 读取当前元素并将内容作为 64 位有符号整数返回。  
       ReadElementContentAsObject  已重载。 读取当前元素并将内容作为 Object 返回。  
       ReadElementContentAsString  已重载。 读取当前元素并将内容作为 String 对象返回。   实例:
    using (XmlReader reader = XmlReader.Create("dataFile_2.xml")) {
          reader.ReadToDescendant("item");      reader.MoveToAttribute("colors");
          string[] colors = (string[]) reader.ReadContentAs(typeof(string[]),null);
          foreach (string color in colors) {
             Console.WriteLine("Colors: {0}", color);
          }                     
    }
    MSDN上有详细解释,你可以查看。
      

  5.   

    我写了一个相似的,但是不知道怎么会有这样的异常产生,请问有人碰到过吗?
    "节点类型 Element 上不支持 ReadContentAs 方法。如果要读取某元素类型化的内容,请使用 ReadElementContentAs 方法。"