Как переместить строку DataTable в первую позицию ее DataTable
Я хочу получить определенную строку на asp.net DataTable и переместите его в первую очередь на эту базу DataTable в столбце column1
значение. Мой Datatable dt1
заполняется через запрос БД, а значение для поиска - через другой запрос из другой БД, поэтому я не знаю значения для поиска в dt1 select
времени.
// I use this variable to search into
// DataTable
string valueToSearch = "some value";
поэтому мне нужно найти значение some value
в мой DataTable в столбце column1
. а затем переместите всю строку в первую позиция.
спасибо.
3 ответов
мы должны клонировать данные строки до:
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);