欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

实体类转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;
        }
相关标签: c#