Как переместить строку 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);