实体类转DataTable
程序员文章站
2022-06-15 09:47:23
...
将实体类转换为DataTable
public static List<T> TableToList<T>(DataTable table)
{
List<T> list = new List<T>();
foreach (DataRow dr in table.Rows)
{
T t = Activator.CreateInstance<T>();
//表示获取类t的所有属性
PropertyInfo[] properties = t.GetType().GetProperties();
//遍历该对象的所有属性
foreach (PropertyInfo item in properties)
{
//检查DataTable是否包含此列(列名==对象的属性名)
if (table.Columns.Contains(item.Name))
{
//该属性不可写,直接跳出
if (!item.CanWrite) continue;
object value = dr[item.Name];
if (value != null)
{
//这个地方要格外注意,value赋值的时候,要严格注意数据类型必须一致
//所以在执行SetValue方法的时候,要使用ChangeType方法将对应的数据转换为对应的数据类型
//获取当前的数据类型
Type type = item.PropertyType;
item.SetValue(t, Convert.ChangeType(value, type), null);
list.Add(t);
}
}
}
}
return list;
}
上一篇: 偷窥PHP编译Cache
下一篇: JS判断数组包含某一项