如何将 DataTable 行移动到其 DataTable 的第一个位置
Posted
技术标签:
【中文标题】如何将 DataTable 行移动到其 DataTable 的第一个位置【英文标题】:How to move a DataTable row to the first position of its DataTable 【发布时间】:2012-11-29 07:57:25 【问题描述】:我想在 asp.net DataTable 上获取特定行,并将其移动到基于列 column1
值的该 DataTable 上的第一行。我的数据表 dt1
是通过数据库查询填充的,而要搜索的值是通过来自另一个数据库的另一个查询,所以我不知道在 dt1 select
时间要搜索的值。
// I use this variable to search into
// DataTable
string valueToSearch = "some value";
所以我需要在column1
列的DataTable 中搜索值some value
。然后将整行移动到第一个位置。
谢谢。
【问题讨论】:
这个 DataTable 是如何填充的? @WonkotheSane 通过数据库查询。图我有带有字符串值的column1
。
【参考方案1】:
我们必须克隆之前的行数据:
DataRow[] dr = dtable.Select("column1 ='" + valueToSearch +"'");
DataRow newRow = dtable.NewRow();
// We "clone" the row
newRow.ItemArray = dr[0].ItemArray;
// We remove the old and insert the new
ds.Tables[0].Rows.Remove(dr[0]);
ds.Tables[0].Rows.InsertAt(newRow, 0);
【讨论】:
【参考方案2】:您必须对此进行性能测试,但一种方法是在查询本身中进行测试。首先获取您想要在顶部的行,然后将其与其余行合并。
由于我对您的数据库一无所知,因此这是一种通用的方法:
SELECT Column1, Column2, Column3
FROM MyTable
WHERE Column1 = 'some value'
UNION
SELECT Column1, Column2, Column3
FROM MyTable
WHERE Column1 <> 'some value'
【讨论】:
我做不到,因为数据表的来源和要搜索的值不同,所以不知道查询时要搜索的值。 在这种情况下,我认为您应该编辑您的问题以提供更多详细信息。数据表是如何填充的(包括绑定),“一些值”是如何作为过滤器输入的,等等。现在,我们都在猜测你的设计。【参考方案3】:如果该列只有一条搜索值的记录,请尝试此操作
DataRow[] dr = dtEmp.Select("column1 ='" + valueToSearch +"'");
myDataTable.Rows.InsertAt(dr[0], 0);
【讨论】:
我不能插入它,因为它已经属于这个数据表,所以我需要先删除。 看看这个。如果它有效,您不需要删除该行并再次插入它。 codeproject.com/Tips/312545/…以上是关于如何将 DataTable 行移动到其 DataTable 的第一个位置的主要内容,如果未能解决你的问题,请参考以下文章
如何根据文件名自动创建文件夹并使用 .BAT 将文件移动到其文件夹中