Skip to content

Instantly share code, notes, and snippets.

@jburditt
Created February 11, 2017 01:12
Show Gist options
  • Save jburditt/0fd705cdfb64a1894c83fda146b907a0 to your computer and use it in GitHub Desktop.
Save jburditt/0fd705cdfb64a1894c83fda146b907a0 to your computer and use it in GitHub Desktop.
DataReaderHelper
public static class DataTableHelpers
{
public static IEnumerable<T> To<T>(this DataTable data)
{
Mapper.Initialize(cfg =>
{
MapperRegistry.Mappers.Add(new AutoMapper.Data.DataReaderMapper { YieldReturnEnabled = true });
});
Mapper.CreateMap<IDataReader, T>();
return Mapper.Map<IDataReader, IEnumerable<T>>(data.CreateDataReader());
}
public static DataTable ToDataTable<T>(this IList<T> data)
{
var props = TypeDescriptor.GetProperties(typeof(T));
var table = new DataTable("DataTable");
for (var i = 0; i < props.Count; i++)
{
var prop = props[i];
table.Columns.Add(prop.Name, prop.PropertyType);
}
var values = new object[props.Count];
foreach (var item in data)
{
for (var i = 0; i < values.Length; i++)
{
values[i] = props[i].GetValue(item);
}
table.Rows.Add(values);
}
return table;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment