Я хочу создать Generi c функцию , в которую я передаю класс Model / ViewModel, и эта функция преобразует Datatable в список этой Model / ViewModel, у меня есть попробовал следующий код , но он дает мне ошибку для значений Null , о которых я упоминал ниже.
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;
}
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 (column.ColumnName == "CreatedOn" || column.ColumnName == "ModifiedOn")
// continue;
if (pro.Name == column.ColumnName)
if(dr[column.ColumnName] != null)
pro.SetValue(obj, dr[column.ColumnName], null);
else
continue;
}
}
return obj;
}
Вызов:
public List<WordInfo> GetData()
{
DataTable data = _wordsDL.Get("GetAll");
return Helper.ConvertDataTable<WordInfo>(data);
}
Объект типа 'System.DBNull' нельзя преобразовать в тип 'System.String'. '