13

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

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

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

谢谢你。

4

3 回答 3

33

我们必须先克隆行数据:

            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);
于 2012-12-12T12:20:31.913 回答
1

您必须对此进行性能测试,但一种方法是在查询本身中进行。首先在顶部获取您想要的行,然后将其与其余行结合起来。

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

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

UNION

SELECT Column1, Column2, Column3
FROM MyTable
WHERE Column1 <> 'some value'
于 2012-12-11T18:20:04.873 回答
-1

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

DataRow[] dr = dtEmp.Select("column1 ='" + valueToSearch +"'");
myDataTable.Rows.InsertAt(dr[0], 0);
于 2012-12-11T18:05:23.213 回答