c# - How to create multi-column primary key for a DataTable

Create multi column PrimaryKey for a DataTable
CreateMultiColumnPrimaryKeyForADataTable.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);
        dt.Columns.Add(dc1);

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

        //this line set the 'BookID' and 'BookName' columns to DataTable PrimaryKey
        dt.PrimaryKey = new DataColumn[] { dc1,dc2 };
        
        DataColumn dc3 = new DataColumn();
        dc3.ColumnName = "Author";
        dc3.DataType = typeof(string);
        dt.Columns.Add(dc3);

        dt.Rows.Add(new object[] { 1, "Canvas Pocket Reference", "David Flanagan" });
        dt.Rows.Add(new object[] { 2, "Google Analytics", "Justin Cutroni" });
        dt.Rows.Add(new object[] { 3, "asp.net example ebook", "test author" });

        /*
            Uncomment this line to get an error because 'BookID' and 'BookName'
            columns are PrimaryKey. So both columns make the row unique.
         */
        //dt.Rows.Add(new object[] { 3, "asp.net example ebook", "Jenny Jones" });

        GridView1.DataSource = dt;
        GridView1.DataBind();
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>How to create multi column PrimaryKey for a DataTable in ado.net</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <h2 style="color:DarkBlue; font-style:italic;">
            How to create multi column
            <br /> PrimaryKey for a DataTable in ado.net
        </h2>
        <hr width="375" align="left" color="CornFlowerBlue" />
        <asp:GridView 
            ID="GridView1"
            runat="server"
            BorderColor="Snow"
            ForeColor="Snow"
            Width="550"
            >
            <HeaderStyle BackColor="DodgerBlue" Height="35" />
            <RowStyle BackColor="OrangeRed" />
            <AlternatingRowStyle BackColor="Tomato" />
        </asp:GridView>
        <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