c # colonne d'insertion datable à la position 0


105

est-ce que quelqu'un connaît la meilleure façon d'insérer une colonne dans un datatable à la position 0?


Pourquoi veux-tu faire cela? L'ordre des colonnes ne devrait en fait pas être pertinent.
Stefan Steinegger

1
Parfois, si vous ajoutez une colonne à la table de données après avoir récupéré les données de db, vous devrez peut-être la définir au début.
Wael Dalloul

1
im pusing the datatable in a bulk insert
Grant

9
@Stefan, je pense que l'ordre des colonnes est pertinent lors de l'utilisation de Sql BulkCopy.
IAbstract

Réponses:


177

Vous pouvez utiliser le code suivant pour ajouter une colonne à Datatable à la position 0:

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

93

Juste pour améliorer la réponse de Wael et la mettre sur une seule ligne:

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

MISE À JOUR: Notez que cela fonctionne lorsque vous n'avez rien d'autre à faire avec DataColumn. Add () renvoie la colonne en question, SetOrdinal () ne renvoie rien.


15
les instructions sur une seule ligne ne sont pas toujours meilleures. Dans ce cas je l'aime +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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.