如何将DataTable行移动到其DataTable的第一个位置



我想在asp.net DataTable上获得一个特定的行,并根据列column1值将其移动到此DataTable上的第一行。我的数据表dt1是通过一个DB查询填充的,而要搜索的值是通过另一个DB的另一个查询,所以我不知道在dt1 select时要搜索的数值。

// I use this variable to search into
// DataTable
string valueToSearch = "some value";

因此,我需要在column1列的DataTable中搜索值some value。然后将整行移动到第一位置。

谢谢。

我们必须克隆之前的行数据:

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);

您必须测试这方面的性能,但实现这一点的一种方法是在查询本身中。首先获取要位于顶部的行,然后将其与其余行组合。

由于我对你的数据库一无所知,这里有一种通用的方法:

SELECT Column1, Column2, Column3
FROM MyTable
WHERE Column1 = 'some value'
UNION
SELECT Column1, Column2, Column3
FROM MyTable
WHERE Column1 <> 'some value'

如果列中搜索值只有一条记录,请尝试此

DataRow[] dr = dtEmp.Select("column1 ='" + valueToSearch +"'");
myDataTable.Rows.InsertAt(dr[0], 0);

最新更新