繁体   English   中英

如何删除和重写数据表中的行,并以不同的顺序将它们从datarow []数组写回?

[英]How can I delete and rewrite rows in a datatable and write them back from a datarow[] array in a different order?

我尝试将数据表行保存到datarow []数组中,然后删除数据表行,然后以不同顺序将它们从datarow []数组重写为数据表。 但是,当我从数据表中删除它们时,无法从datarow []数组中访问它们。

我不知道我是否在正确执行此操作,或者我是否完全偏离了常规,但我迫切需要帮助。

这就是我想要做的:

我有一个8行的数据表。 我希望能够以某种方式循环遍历8行并根据某些条件对它们重新排序。

例如,我的行具有一个发票编号,行号和零件号作为关键字段。 根据条件,我可能需要第6,7,8行作为第1,2,3行开始,然后将其余部分向下移动。

如果有人有想法,请回答....这是一个紧急问题。

谢谢,

山姆

使用DataView可以查看行,因为可以像这样对行进行排序。

dataTable.DefaultView.Sort = "columnNameA, columnNameB desc";

然后,无论您使用什么列表,都将其绑定到DataView。

哦,这是有关Sort属性的一些文档。

如果您使用DataRow:

var dr = table.Rows[0];

然后从表格中删除该行, dr也将被删除。 在同一行。 那解释了你的问题。

至于解决方案,请不要对DataTable中的行重新排序。 而是添加另一个名为RowOrder列,对其进行修改以更改顺序,然后根据该列对DataTable进行排序,如@ mperrenoud03所示:

table.DefaultView.Sort =“ RowOrder”;

并使用默认视图。

您可以尝试使用以下方法:

        DataTable table = new DataTable();
        table.Columns.Add("Invoice", typeof(string));
        table.Columns.Add("Line", typeof(int));
        table.Columns.Add("Part", typeof(string));

        for (int i = 1; i <= 9; i++)
            table.Rows.Add("Invoice " + i, i, "Part " + i);
        //reorder them:
        int[] orders = { 6, 7, 8, 1, 2, 3, 4, 5 };
        DataTable table2 = table.Clone();
        DataRow row;
        for (int i = 0; i < orders.Length; i++)
        {
            row = table2.NewRow();
            row["Invoice"] = table.Rows[orders[i]]["Invoice"];
            row["Line"] = table.Rows[orders[i]]["Line"];
            row["Part"] = table.Rows[orders[i]]["Part"];
            table2.Rows.Add(row);
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM