c # datatable wstaw kolumnę na pozycji 0


105

czy ktoś zna najlepszy sposób na wstawienie kolumny w datatable na pozycji 0?


Dlaczego chcesz to zrobić? W rzeczywistości kolejność kolumn nie powinna mieć znaczenia.
Stefan Steinegger

1
czasami, jeśli dodajesz kolumnę do datatable po pobraniu danych z bazy danych, może być konieczne ustawienie jej na początku.
Wael Dalloul

1
Im pusing datatable do zbiorczej wstawki
Grant

9
@Stefan, uważam, że kolejność kolumn jest istotna podczas korzystania z Sql BulkCopy.
IAbstract

Odpowiedzi:


177

Możesz użyć następującego kodu, aby dodać kolumnę do Datatable w pozycji 0:

    DataColumn Col   = datatable.Columns.Add("Column Name", System.Type.GetType("System.Boolean"));
    Col.SetOrdinal(0);// to put the column in position 0;

93

Aby poprawić odpowiedź Waela i umieścić ją w jednym wierszu:

dt.Columns.Add("Better", typeof(Boolean)).SetOrdinal(0);

UPDATE: Zauważ, że to działa, gdy nie musisz robić nic więcej z DataColumn. Add () zwraca daną kolumnę, SetOrdinal () nic nie zwraca.


15
pojedyncze stwierdzenie ligne nie zawsze jest lepsze. W tym przypadku mi się podoba +1
Rémi

2
    //Example to define how to do :

    DataTable dt = new DataTable();   

    dt.Columns.Add("ID");
    dt.Columns.Add("FirstName");
    dt.Columns.Add("LastName");
    dt.Columns.Add("Address");
    dt.Columns.Add("City");
           //  The table structure is:
            //ID    FirstName   LastName    Address     City

       //Now we want to add a PhoneNo column after the LastName column. For this we use the                               
             //SetOrdinal function, as iin:
        dt.Columns.Add("PhoneNo").SetOrdinal(3);

            //3 is the position number and positions start from 0.`enter code here`

               //Now the table structure will be:
              // ID      FirstName   LastName    LastName   PhoneNo     Address     City
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.