Dynamic Objects Conveting into Data Table in C#

The method below converts an array of objects to a DataTable object in C#.

public static DataTable GetDataTableFromObjects(object[] objects)

{

    if (objects != null && objects.Length > 0)

    {

        Type t = objects[0].GetType();

        DataTable dt = new DataTable(t.Name);

        foreach (PropertyInfo pi in t.GetProperties())

        {

            dt.Columns.Add(new DataColumn(pi.Name));

        }

        foreach (var o in objects)

        {

            DataRow dr = dt.NewRow();

            foreach (DataColumn dc in dt.Columns)

            {

                dr[dc.ColumnName] = o.GetType().GetProperty(dc.ColumnName).GetValue(o, null);

            }

            dt.Rows.Add(dr);

        }

        return dt;

    }

    return null;

}