2012-12-11 155 views
8

我想獲得一個asp.net DataTable上的特定行,並將其移動到第一個到此DataTable基礎上的列column1值。我的數據表dt1通過數據庫查詢填充,要搜索的值是通過來自另一個數據庫的另一個查詢,因此我不知道在dt1 select時間搜索的值。如何將一個DataTable行移動到其DataTable的第一個位置

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

所以我需要的價值some value搜索到我的DataTable列column1。然後將整行移到第一個位置。

謝謝。

+0

這是怎麼DataTable的人口? –

+0

@WonkotheSane通過DataBase查詢。圖我有帶有字符串值的'column1'。 – anmarti

回答

22

我們以前克隆的行數據:

  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); 
+0

輝煌的解決方案 –

0

如果列中只有一個搜索到的值記錄比試試這個

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

我不能插入它,因爲它已經屬於這個數據表,所以我需要刪除prevously。 – anmarti

+1

看看這個。你不需要刪除該行並將其重新插入,如果它工作。 http://www.codeproject.com/Tips/312545/A-method-to-move-rows-within-a-DataTable –

0

你將要測試這個性能,但要做到這一點的一種方式是在查詢本身。首先獲取所需的行,然後將其與其餘行進行組合。

因爲我什麼都不知道你的數據庫的,這裏是一個通用的方法來做到這一點:

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

UNION 

SELECT Column1, Column2, Column3 
FROM MyTable 
WHERE Column1 <> 'some value' 
+0

我不能這樣做,因爲datatable的來源和搜索的值是不同的,所以我不知道在查詢時間搜索的價值。 – anmarti

+0

在這種情況下,我認爲你應該編輯你的問題來提供更多細節。如何填充數據表(包括綁定),作爲過濾器輸入的「某些值」是什麼等。現在,我們都在猜測您的設計。 –

相關問題