Convert DataTable to List

Snippet

public static List<T> ConvertDataTable<T>(DataTable dt)
    {
        List<T> data = new List<T>();
        foreach (DataRow row in dt.Rows)
        {
            T item = GetItem<T>(row);
            data.Add(item);
        }
        return data;
    }


Snippet
 public static T GetItem<T>(DataRow dr)
    {
        Type temp = typeof(T);
        T obj = Activator.CreateInstance<T>();
 
        foreach (DataColumn column in dr.Table.Columns)
        {
            foreach (PropertyInfo pro in temp.GetProperties())
            {
                if (pro.Name == column.ColumnName)
                    pro.SetValue(obj, dr[column.ColumnName], null);
                else
                    continue;
            }
        }
        return obj;
    }

Snippet
public class Student
{
    public int StudentId { get; set; }
    public string StudentName { get; set; }
    public string Address { get; set; }
    public string MobileNo { get; set; }
}  



Snippet
DataTable dt = new DataTable("Student");
        dt.Columns.Add("StudentId", typeof(Int32));
        dt.Columns.Add("StudentName", typeof(string));
        dt.Columns.Add("Address", typeof(string));
        dt.Columns.Add("MobileNo", typeof(string));
        //Data  
        dt.Rows.Add(1, "Manish", "Hyderabad", "0000000000");
        dt.Rows.Add(2, "Venkat", "Hyderabad", "111111111");
        dt.Rows.Add(3, "Namit", "Pune", "1222222222");
        dt.Rows.Add(4, "Abhinav", "Bhagalpur", "3333333333");
 
        List<Student> studentDetails = new List<Student>();
        studentDetails = Class1.ConvertDataTable<Student>(dt);
        GridView1.DataSource = studentDetails;
        GridView1.DataBind();