我想在asp.net DataTable上获取一个特定的行,并将其移动到第一个基于column1
列的DataTable基础上。我的数据表dt1
是通过数据库查询填充的,要搜索的值是来自另一个数据库的另一个查询,因此我不知道要在dt1 select
时间搜索的值。
// I use this variable to search into
// DataTable
string valueToSearch = "some value";
因此,我需要在some value
列中将值column1
搜索到我的DataTable中。然后将整行移动到第一个位置。
谢谢。
答案 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);