2012-12-11 20 views
8

Chcę uzyskać konkretny wiersz na Asp.net DataTable i przenieść go jako pierwszy na bazę DataTable na wartość kolumny column1. Mój Datatable dt1 jest wypełniany przez zapytanie DB, a wartość do wyszukiwania jest przez inne zapytanie z innego DB, więc nie znam wartości do wyszukiwania w czasie dt1 select.Jak przenieść wiersz DataTable na pierwszą pozycję jego DataTable

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

Więc muszę szukać wartości some value do mojego DataTable w kolumnie column1. a następnie przesuń cały wiersz do pierwszej pozycji.

Dziękuję.

+0

Jak to DataTable zaludnionych? –

+0

@WonkotheSane za pomocą zapytania DataBase. Rysunek Mam 'kolumna1' z wartościami ciągu. – anmarti

Odpowiedz

22

Mamy do sklonowania danych rząd przed:

  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

genialne rozwiązanie –

0

Jeśli kolumna ma tylko jeden rekord przeszukiwanego wartości niż spróbować tej

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

Nie mogę wstawić go, ponieważ już należy do tego datatable, więc musiałbym usunąć prevously. – anmarti

+1

Spójrz na to. nie musisz usuwać wiersza i wstawić go ponownie, jeśli działa. http://www.codeproject.com/Tips/312545/A-method-to-move-rows-within-a-DataTable –

0

Trzeba będzie przetestować działanie w tej sprawie, ale jeden sposób to zrobić jest w samym zapytaniu. Najpierw zdobądź żądane wiersze i połącz je z pozostałymi wierszami.

Ponieważ nic o swojej bazy wiedzieć, tutaj jest ogólnym sposobem, aby to zrobić:

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

UNION 

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

Nie mogę tego zrobić, ponieważ źródła datatable i wartość do wyszukiwania są różne, więc nie znam wartości do wyszukiwania w czasie zapytania. – anmarti

+0

W takim przypadku powinienem edytować Twoje pytanie, aby podać więcej szczegółów. W jaki sposób jest wypełniany datatable (w tym powiązanie), jak wprowadzana jest "pewna wartość" jako filtr, itp. W tej chwili wszyscy zgadujemy, co należy do twojego projektu. –