1). public static DataTable ConvertToDatatable<T>(List<T> data)
{
PropertyDescriptorCollection props =
TypeDescriptor.GetProperties(typeof(T));
DataTable table = new DataTable();
for
(int i = 0; i < props.Count;
i++)
{
PropertyDescriptor prop = props[i];
if (prop.PropertyType.IsGenericType &&
prop.PropertyType.GetGenericTypeDefinition() == typeof(Nullable<>))
table.Columns.Add(prop.Name,
prop.PropertyType.GetGenericArguments()[0]);
else
table.Columns.Add(prop.Name, prop.PropertyType);
}
object[] values = new object[props.Count];
foreach (T item in data)
{
for (int i = 0; i < values.Length;
i++)
{
values[i] =
props[i].GetValue(item);
}
table.Rows.Add(values);
}
return table;
}
2). var table = entities.Select(x => new
{
x.Id,
Contact = x.Contact.Name,
Address = x.Address.Address
}).CopyToDataTable();