【发布时间】:2011-03-19 06:59:55
【问题描述】:
目标是从 XML 填充数据集,对其中一个 DataTables 进行排序,然后将排序后的 DataSet 写回 XML。
我似乎无法对我的 DataSet 进行排序,并尝试了一些变体。它可以很好地添加数据,但不会排序。希望有人能帮忙阻止我拔头发。
DataSet dsXml = new DataSet();
dsXml.ReadXml(msXml);
DataTable tbl;
// Read DataTable.
tbl = dsXml.Tables["cj"];
// Set Primary Key
tbl.PrimaryKey = new DataColumn[] { tbl.Columns["a"] };
DataView dtView = tbl.DefaultView;
DataRow foundRow = tbl.Rows.Find(findCookiejarId);
tbl.Rows.Add(addRow);
dtView.ToTable().Sort = "a ASC";
StringWriter sw = new StringWriter();
dsXml.WriteXml(sw);
更新
现在它从数据集中删除其他表。这就是 xml 的外观:
<user_data>
<settings>
<a></a>
<b></b>
<c></c>
</settings>
<perms>
<a></a>
<b></b>
<c></c>
</perms>
<cj>
<a></a>
<b></b>
<c></c>
</cj>
<cj>
<a></a>
<b></b>
<c></c>
</cj>
<cj>
<a></a>
<b></b>
<c></c>
</cj>
</user_data>
看起来像这样,删除了其他表,但排序工作正常 :)
</DocumentElement>
<cj>
<a></a>
<b></b>
<c></c>
</cj>
<cj>
<a></a>
<b></b>
<c></c>
</cj>
<cj>
<a></a>
<b></b>
<c></c>
</cj>
</DocumentElement>
如何使用 C# 仅对 DataTable cj 进行排序,然后将整个 DataSet 写回 XML? settings 和 perms 应该保持不变。
【问题讨论】: