colonna di inserimento databile c # alla posizione 0


105

qualcuno conosce il modo migliore per inserire una colonna in un datatable alla posizione 0?


Perchè vuoi fare questo? L'ordine delle colonne in realtà non dovrebbe essere rilevante.
Stefan Steinegger

1
a volte, se stai aggiungendo una colonna al datatable dopo aver ottenuto i dati da db, potresti doverla impostare al momento della richiesta.
Wael Dalloul

1
im pusing il datatable in un inserto in blocco
Grant

9
@Stefan, credo che l'ordine delle colonne sia rilevante quando si utilizza Sql BulkCopy.
IAbstract

Risposte:


177

È possibile utilizzare il codice seguente per aggiungere una colonna a Datatable in posizione 0:

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

93

Solo per migliorare la risposta di Wael e metterla su una singola riga:

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

AGGIORNAMENTO: nota che funziona quando non devi fare nient'altro con DataColumn. Add () restituisce la colonna in questione, SetOrdinal () non restituisce nulla.


15
l'affermazione di una singola linea non è sempre migliore. In questo caso mi piace +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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.