You should use EF to get your data from database, then you should implement a method like the next one to dynamic create a data table by doing also some processing on the given data like in the next example:
public static DataTable ListToDataTable(List<User> entityList)
{
DataTable usersDataTable = new DataTable();
usersDataTable.Columns.Add("ID", typeof(int));
usersDataTable.Columns.Add("Person", typeof(string));
usersDataTable.Columns.Add("Center", typeof(string));
usersDataTable.Columns.Add("Service", typeof(string));
usersDataTable.Columns.Add("UserName", typeof(string));
usersDataTable.Columns.Add("Email", typeof(string));
foreach (User user in entityList)
{
usersDataTable.Rows.Add(user.ID,
String.Format("{0} {1}", user.FirstName, user.LastName),
(user.Center == null ? "DGASPC" : user.Center.Name),
(user.Service == null ? string.Empty : user.Service.Name),
user.UserName,
(user.Email == null ? string.Empty : user.Email));
}
return usersDataTable;
}