我把XML的数据加载到DataSet中后,想用DataTable.Compute("Sum(value1)","value2>35")进行统计。因为XML加载到DataSet都是String格式,所以不能对各字段进行统计。请问:有什么办法可以对DataTable来统计吗?不要告诉我对DataTable进行遍历,因数据量很大,条件也很复杂,采用遍历太繁杂。
例如 xml如下:
<?xml version="1.0" encoding="utf-8" ?>
- <root>
- <Tag1>
<value1>42</value1>
<value2>35</value2>
</Tag1>
- <Tag1>
<value1>39</value1>
<value2>34.9</value2>
</Tag1>
- <Tag1>
<value1>41</value1>
<value2>35.8</value2>
</Tag1>
- <Tag1>
<value1>41</value1>
<value2>35.2</value2>
</Tag1>
</root>
例如 xml如下:
<?xml version="1.0" encoding="utf-8" ?>
- <root>
- <Tag1>
<value1>42</value1>
<value2>35</value2>
</Tag1>
- <Tag1>
<value1>39</value1>
<value2>34.9</value2>
</Tag1>
- <Tag1>
<value1>41</value1>
<value2>35.8</value2>
</Tag1>
- <Tag1>
<value1>41</value1>
<value2>35.2</value2>
</Tag1>
</root>
DataTable dt = new DataTable("Tag1");
dt.Columns.Add("value1", typeof(int));
dt.Columns.Add("value2", typeof(double));
ds.Tables.Add(dt);
ds.ReadXml("TestDataSet.xml");
Console.WriteLine(dt.Rows.Count); Console.WriteLine(dt.Compute("Sum(value1)","value2>35"));2. create an expression column to convert your dataDataSet ds = new DataSet();
ds.ReadXml("TestDataSet.xml");
Console.WriteLine(ds.Tables[0].Rows.Count);
foreach(DataColumn dc in ds.Tables[0].Columns)
Console.WriteLine(dc.ColumnName); ds.Tables[0].Columns.Add("newvalue1",typeof(int),"Convert(value1,'System.Int32')");
ds.Tables[0].Columns.Add("newvalue2",typeof(double),"Convert(value2,'System.Double')"); Console.WriteLine(ds.Tables[0].Compute("Sum(newvalue1)"," newvalue2 > 35"));
这样那些string类型就按你的强类型shema进行装载了,
注意你的数据格式要正确。
当时也试了对加载后的table的列类型进行强制转换,但没成功。定义强类型DataSet的方法,没有试。