c # columna de inserción de tabla de datos en la posición 0


105

¿Alguien sabe la mejor manera de insertar una columna en una tabla de datos en la posición 0?


¿Por qué quieres hacer esto? El orden de las columnas no debería ser relevante.
Stefan Steinegger

1
a veces, si está agregando una columna a la tabla de datos después de obtener los datos de db, es posible que deba configurarla al principio.
Wael Dalloul

1
im pusing la tabla de datos en una inserción masiva
Grant

9
@Stefan, creo que el orden de las columnas es relevante cuando se usa Sql BulkCopy.
IAbstract

Respuestas:


177

Puede usar el siguiente código para agregar una columna a Datatable en la posición 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 para mejorar la respuesta de Wael y ponerla en una sola línea:

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

ACTUALIZACIÓN: tenga en cuenta que esto funciona cuando no necesita hacer nada más con DataColumn. Add () devuelve la columna en cuestión, SetOrdinal () no devuelve nada.


15
declaración de ligne única no siempre es mejor. En este caso me gusta +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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.