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

时间:2012-12-11 17:53:03

标签: c# asp.net linq datatable dataset

我想在asp.net DataTable上获取一个特定的行,并将其移动到第一个基于column1列的DataTable基础上。我的数据表dt1是通过数据库查询填充的,要搜索的值是来自另一个数据库的另一个查询,因此我不知道要在dt1 select时间搜索的值。

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

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

谢谢。

3 个答案:

答案 0 :(得分:24)

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

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

答案 1 :(得分:1)

您必须在此测试性能,但实现此目的的一种方法是在查询本身。首先从顶部获取所需的行,然后将其与其余行组合。

由于我对您的数据库一无所知,所以这是一种通用的方法:

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

UNION

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

答案 2 :(得分:0)

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

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