it-swarm.com.ru

Как переместить строку DataTable на первую позицию своего DataTable

Я хочу получить конкретную строку в DataTable asp.net и переместить ее, чтобы она стала первой в этой базе данных на значении столбца column1. Мой Datatable dt1 заполняется с помощью запроса к БД, а значение для поиска - с помощью другого запроса из другой БД, поэтому я не знаю значение для поиска во время dt1 select.

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

Поэтому мне нужно найти значение some value в моей таблице данных в столбце column1. а затем переместите весь ряд в первую позицию.

Спасибо.

10
anmarti

Мы должны клонировать данные строки раньше:

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

Вам придется проверить производительность на этом, но один из способов сделать это - в самом запросе. Сначала найдите нужные строки вверху и объедините их с остальными строками.

Поскольку я ничего не знаю о вашей базе данных, вот общий способ сделать это:

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

UNION

SELECT Column1, Column2, Column3
FROM MyTable
WHERE Column1 <> 'some value'
2
Wonko the Sane

Если в столбце есть только одна запись для искомого значения, попробуйте это

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