有没有可能在DataTable中更改行的顺序,例如将当前索引为5的行移动到索引为3的位置等?
我有一个混乱的旧代码,其中下拉菜单从DataTable获取其值,DataTable从数据库获取其值。由于数据库具有太多的列和条目,因此无法对其进行更改。我的原始想法是在数据库中添加新列并按其值排序,但这将很困难。
因此,既然这只是向用户呈现的问题,我考虑只需在该DataTable中切换行的顺序。有人知道在C#中实现这一点的最佳方法吗?
这是我的当前代码:
DataTable result = flokkurDao.GetMCCHABAKflokka("MSCODE");
foreach (DataRow row in result.Rows)
{
m_cboReasonCode.Properties.Items.Add(row["FLOKKUR"].ToString().Trim() + " - " + row["SKYRING"]);
}
例如,我想将之前发行的信贷行2011推到DataTable的顶部。
解决方案:
对于那些在DataTable中排序行并且使用不支持Linq的过时技术可能会有问题,这可能会有所帮助:
DataRow firstSelectedRow = result.Rows[6];
DataRow firstNewRow = result.NewRow();
firstNewRow.ItemArray = firstSelectedRow.ItemArray; // copy data
result.Rows.Remove(firstSelectedRow);
result.Rows.InsertAt(firstNewRow, 0);
你需要克隆该行,移除它并使用新索引再次插入。这段代码将索引为6的行移动到 DataTable 的第一位。