我正在将一些xml文件读入数据集,对数据表进行排序,并为每一行(如果不存在)生成另一个数据集中的新数据表。
foreach (FileInfo f in files)
{
if (f.Name.StartsWith("ID_" + lbl_ID.Text))
{
dsDatei.Reset();
dsDatei.ReadXml(Application.StartupPath + f.Name);
DataTable dtSort = dsDatei.Tables[0].Clone();
dtSort.Columns[1].DataType = typeof(Int32);
foreach (DataRow dr in dsDatei.Tables[0].Rows)
{
dtSort.ImportRow(dr);
}
dtSort.DefaultView.Sort = "Number";
dsDatei.Tables.RemoveAt(0);
dsDatei.Tables.Add(dtSort.DefaultView.ToTable());
...some code
foreach (DataRow dr in dsDatei.Tables[0].Rows)
{
if (!dsAusdruck.Tables.Contains(dr[1].ToString()))
{
dsAusdruck.Tables.Add(dr[1].ToString());
dsAusdruck.Tables[dr[1].ToString()].Columns.Add("Position");
...add more columns
}
...some code
}
}
}
我的问题是,例如在第一个xml文件中缺少数字144,在第二个xml文件中,数字144存在,并且在数据集的末尾创建名称为144的数据表。
稍后我使用数据集创建一个pdf文件,为每个数据表创建一个新页面。所以我在最后一页获得了数字144,而不是在数字143和145的页面之间。
那么如何对数据集中的数据表进行排序呢?
由于
回答PinBack的结果
答案 0 :(得分:2)
使用Linq订购表格:
UPDATE(重新排序Tablecollection):
DataSet loDs = new DataSet();
loDs.Tables.Add(new DataTable("141"));
loDs.Tables.Add(new DataTable("142"));
loDs.Tables.Add(new DataTable("143"));
loDs.Tables.Add(new DataTable("145"));
loDs.Tables.Add(new DataTable("144"));
var loSortedDataTableList = loDs.Tables.Cast<DataTable>().OrderBy(item => int.Parse(item.TableName)).ToList();
loDs.Tables.Clear();
foreach (DataTable loDt in loSortedDataTableList)
{
loDs.Tables.Add(loDt);
Console.WriteLine(loDt.TableName);
}
输出是:
141
142个
143个
144个
145