Получить из него модель с данными и наполнением
В моем проекте у меня есть метод заполнения.
public IList<MyModel> Fill(DataTable dt)
{
IList<MyModel> IProperty = new List<MyModel>();
for (int i = 0; i < dt.Rows.Count; i++)
{
MyModel Property = new MyModel
{
Name= dt.Rows[i]["Name"].ToString(),
Surname = dt.Rows[i]["Surname"].ToString(),
Age = dt.Rows[i]["Age"].ToString(),
};
IProperty.Add(Property);
}
return IProperty;
}
Это заполнить мою модель из Datatable. Но я должен написать этот метод заполнения для всей модели. Я не хочу писать этот метод все время. Мне нужно решение для этого. Я открыт для любого предложения
Не: я не хочу использовать платформу Entity или другие платформы ORM.
1 ответ
Решение
Если вы можете убедиться, что имена полей и свойства объекта с одинаковым именем, попробуйте это:
public IEnumerable<T> Fill<T>(DataTable dt)
where T : new()
{
return dt.AsEnumerable().Select(row =>
{
var obj = new T();
var properties =
from p in obj.GetType().GetProperties()
join c in dt.Columns.Cast<DataColumn>() on p.Name equals c.ColumnName
select new {p, c};
foreach (var item in properties)
item.p.SetValue(obj, row[item.c]);
return obj;
});
}