web-dev-qa-db-ja.com

DataTableの行をDataTableの最初の位置に移動する方法

Asp.net DataTableで特定の行を取得し、それを列column1値に基づいてこのDataTableベースの最初の行に移動したいと思います。私のデータテーブルdt1はDBクエリを介して入力され、検索する値は別のDBからの別のクエリを介しているため、dt1 select時に検索する値がわかりません。

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

したがって、値some valueをDataTableの列column1で検索する必要があります。次に、行全体を最初の位置に移動します。

ありがとうございました。

11
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);
28
anmarti

これでパフォーマンスをテストする必要がありますが、これを行う1つの方法は、クエリ自体です。最初に必要な行を一番上に取得し、それを残りの行と組み合わせます。

私はあなたのデータベースについて何も知らないので、これを行う一般的な方法は次のとおりです。

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

UNION

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

検索された値のレコードが列に1つしかない場合は、これを試してください

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