c# - How to check if a column exists in a DataTable

Determine whether the DataTable contains a specified DataColumn
The DataTable class represents one table of in-memory data. The DataTable objects are conditionally case-sensitive. To create a DataTable programmatically the asp.net developers must first define its schema by adding DataColumn objects to the DataColumnCollection. To add rows to a DataTable, the developers must first use the NewRow() method to return a new DataRow object. The DataTable also contains a collection of Constraint objects that can be used to ensure the integrity of the data.

The following asp.net c# tutorial code demonstrates how we can determine whether a DataTable contains a specific DataColumn. So we have to check whether a specified DataCoumn exists or not within a DataTable. Here we used the DataTable class Columns property to get its columns collection then we find the specified column within the DataTable’s columns collection.

The DataTable class Columns property gets the collection of columns that belong to this table. The Columns property value is a DataColumnCollection that contains the collection of DataColumn objects for the table. An empty collection is returned if no DataColumn objects exist.

The DataColumnCollection class represents a collection of DataColumn objects for a DataTable. The DataColumnCollection Contains(String) method checks whether the collection contains a column with the specified name.

The DataColumnCollection Contains(string name) method’s name parameter is a String which is the ColumnName of the column to look for. This method returns a Boolean value. It returns true if a column exists with this name otherwise the method returns false.

The Contains() method returns false when two or more columns have the same name but different namespaces. The method call does not succeed if there is any ambiguity when matching a column name to exactly one column.

So finally, using the DataTable Columns property the asp.net developers can get the DataColumnCollection object. And the DataColumnCollection class Contains(String) method allows the developers to determine whether a specific DataColumn exists in the specified DataTable or not.
ContainsMethodDataTable.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 dc = new DataColumn();
        dc.ColumnName = "BookID";
        dc.DataType = typeof(int);

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

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

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

        dt.Rows.Add(new object[] { "1", "Network Your Computers & Devices Step by Step", "Ciprian Adrian Rusen" });
        dt.Rows.Add(new object[] { "2", "Microsoft® Expression® Web 4 Step by Step", "Chris Leeds" });
        dt.Rows.Add(new object[] { "3", "My New iPad, Second Edition", "Wallace Wang" });
        
        GridView1.DataSource = dt;
        GridView1.DataBind();

        //this line check the 'BookName' DataColumn exists in DataTable or not
        Boolean columnExists = dt.Columns.Contains("BookName");
        Label1.Text = "'BookName' DataColumn exists in DataTable? = " + columnExists;
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>How to check the DataTable contains a DataColumn with the specified name in ado.net</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <h2 style="color:DarkBlue; font-style:italic;">
            Using Contains() method - How to check the DataTable
            <br /> contains a DataColumn with the specified name in ado.net
        </h2>
        <hr width="550" align="left" color="CornFlowerBlue" />
        <asp:GridView 
            ID="GridView1"
            runat="server"
            BorderColor="Snow"
            ForeColor="Snow"
            Width="525"
            HeaderStyle-BackColor="Maroon"
            RowStyle-BackColor="OrangeRed"
            AlternatingRowStyle-BackColor="Orchid"
            >
        </asp:GridView>
        <br /><br />
        <asp:Label
             ID="Label1"
             runat="server"
             Font-Size="Large"
             ForeColor="DarkSeaGreen"
             >
        </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