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.