public class ConvertDataTableToList
{
/// To convert data table to list
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;
}
/// Mapping data row to class object
private 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)
{
if (pro.PropertyType == typeof(Int64))
{
var valueToset = dr[column.ColumnName] == DBNull.Value ? 0
: Convert.ToInt64(dr[column.ColumnName]);
pro.SetValue(obj, valueToset, null);
}
else if (pro.PropertyType == typeof(Nullable<Decimal>))
{
var valueToset = dr[column.ColumnName] == DBNull.Value ? 0
: Convert.ToDecimal(dr[column.ColumnName].ToString().Replace(",", ""));
pro.SetValue(obj, valueToset, null);
}
else if (pro.PropertyType == typeof(Nullable<bool>))
{
var valueToset = dr[column.ColumnName] == DBNull.Value ? false
: Convert.ToBoolean(dr[column.ColumnName].ToString());
pro.SetValue(obj, valueToset, null);
}
else if (pro.PropertyType == typeof(string))
{
var valueToset = dr[column.ColumnName] == DBNull.Value ? ""
: dr[column.ColumnName].ToString();
pro.SetValue(obj, valueToset, null);
}
else if (pro.PropertyType == typeof(Nullable<DateTime>))
{
var valueToset = dr[column.ColumnName] == DBNull.Value ? DateTime.Now
: Convert.ToDateTime(dr[column.ColumnName].ToString());
pro.SetValue(obj, valueToset, null);
}
else
{
pro.SetValue(obj, dr[column.ColumnName], null);
}
}
else
continue;
}
}
return obj;
}
}
{
pro.SetValue(obj, dr[column.ColumnName], null);
}
}
else
continue;
}
}
return obj;
}
}
Comments
Post a Comment