c# - How to get column names from a DataTable

Get all DataColumns name from DataTable
.Net framework's DataTable represents one table of in-memory data. DataTable class exists in System.Data namespace. DataTable.Columns property allow us to get the collection of columns that belong to this table.

DataTable Columns property value type is System.Data.DataColumnCollection which represents a DataColumnCollection that contains the collection of DataColumn objects for the table. if DataTable contains no DataColumn objects, then this property return an empty collection.

.Net framework's DataColumnCollection class represents a collection of DataColumn objects for a DataTable. DataColumnCollection determines the schema of a table by defining the data type of each column.

We can loop through a DataTable's DataColumnCollection to get all DataColumns name in the DataTable. in the bellow example code, we applied a foreach loop through the DataColumnCollection to get all columns name in a specified table.

The following ado.net c# example code demonstrate us how can we get all DataColumns name in a DatTable programmatically at run in an asp.net application.
DataColumnListFromDataTable.aspx

<%@ Page Language="C#" AutoEventWireup="true" %>
<%@ Import Namespace="System.Data" %>

<!DOCTYPE html>
<script runat="server">
    void Button1_Click(object sender, System.EventArgs e)
    {
        DataTable dt = new DataTable();
        dt.TableName = "Books";

        DataColumn dc1 = new DataColumn();
        dc1.ColumnName = "BookID";
        dc1.DataType = typeof(int);
        dc1.AllowDBNull = false;

        DataColumn dc2 = new DataColumn();
        dc2.ColumnName = "BookName";
        dc2.DataType = typeof(string);
        dc2.MaxLength = 100;

        DataColumn dc3 = new DataColumn();
        dc3.ColumnName = "Author";
        dc3.DataType = typeof(string);
        dc3.MaxLength = 50;

        dt.Columns.AddRange(new DataColumn[] { dc1, dc2,dc3 });

        dt.Rows.Add(new object[] { "1", "Droid 2: The Missing Manual", "Preston Gralla" });
        dt.Rows.Add(new object[] { "2", "Building Android Apps with HTML, CSS, and JavaScript", "Jonathan Stark" });
        dt.Rows.Add(new object[] { "3", "Learning the iOS 4 SDK for JavaScript Programmers", "Danny Goodman" });
        
        GridView1.DataSource = dt;
        GridView1.DataBind();

        Label1.Text = "<b>Columns in DataTable....</b><br />";
        foreach (DataColumn dc in dt.Columns)
        {
            Label1.Text += dc.ColumnName + "<br />";
        }
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>Using foreach loop - How to get all DataColumn name from DataTable in ado.net</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <h2 style="color:DarkBlue; font-style:italic;">
            Using foreach loop - How to get all DataColumn
            <br /> name from DataTable programmatically in ado.net
        </h2>
        <hr width="500" align="left" color="CornFlowerBlue" />
        <asp:GridView 
            ID="GridView1"
            runat="server"
            BorderColor="Snow"
            ForeColor="Snow"
            Width="525"
            HeaderStyle-BackColor="DarkSeaGreen"
            RowStyle-BackColor="BurlyWood"
            AlternatingRowStyle-BackColor="SandyBrown"
            >
        </asp:GridView>
        <br />
        <asp:Label
             ID="Label1"
             runat="server"
             Font-Size="Large"
             ForeColor="OrangeRed"
             >
        </asp:Label>
        <br /><br />
        <asp:Button 
            ID="Button1"
            runat="server"
            OnClick="Button1_Click"
            Text="Populate GridView"
            Height="45"
            Font-Bold="true"
            ForeColor="DarkBlue"
            />
    </div>
    </form>
</body>
</html>
More c# examples