c # datierbare Einfügespalte an Position 0


105

Kennt jemand den besten Weg, um eine Spalte in eine Datentabelle an Position 0 einzufügen?


Warum willst du das tun? Die Reihenfolge der Spalten sollte eigentlich nicht relevant sein.
Stefan Steinegger

1
Manchmal, wenn Sie der Datentabelle eine Spalte hinzufügen, nachdem Sie die Daten von db erhalten haben, müssen Sie sie möglicherweise beim Betteln festlegen.
Wael Dalloul

1
Ich pusche die Datentabelle in eine Masseneinfügung
Grant

9
@Stefan, ich glaube, die Reihenfolge der Spalten ist relevant, wenn Sql BulkCopy verwendet wird.
IAbstract

Antworten:


177

Mit dem folgenden Code können Sie Datatable in Position 0 eine Spalte hinzufügen:

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

93

Nur um Waels Antwort zu verbessern und sie in eine einzige Zeile zu setzen:

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

UPDATE: Beachten Sie, dass dies funktioniert, wenn Sie mit der DataColumn nichts anderes tun müssen. Add () gibt die betreffende Spalte zurück, SetOrdinal () gibt nichts zurück.


15
Single Ligne Statement sind nicht immer besser. In diesem Fall gefällt es mir +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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.