DataTable 转换为List 集合

复制代码
    public static List<T> TableToListModel<T>(DataTable dt) where T : new()
    {
        // 定义集合
        List<T> ts = new List<T>();
        // 获得此模型的类型
        Type type = typeof(T);
        string tempName = "";
        foreach (DataRow dr in dt.Rows)
        {
            T t = new T();
            // 获得此模型的公共属性
            PropertyInfo[] propertys = t.GetType().GetProperties();
            foreach (PropertyInfo pi in propertys)
            {
                tempName = pi.Name;  // 检查DataTable是否包含此列

                if (dt.Columns.Contains(tempName))
                {
                    // 判断此属性是否有Setter
                    if (!pi.CanWrite) continue;
                    bool flag = Convert.IsDBNull(dr[tempName]);
                    if (!flag)
                    {
                        try
                        {
                            if (pi.PropertyType.Name.Contains("Nullable"))
                            {
                                NullableConverter convert = new NullableConverter(pi.PropertyType);
                                object value = convert.ConvertFromString(Dc.ToStr(dr[tempName]));
                                if (value != DBNull.Value)
                                {
                                    pi.SetValue(t, value, null);
                                }
                            }
                            else
                            {
                                object value = Convert.ChangeType(dr[tempName], pi.PropertyType);
                                if (value != DBNull.Value)
                                {
                                    pi.SetValue(t, value, null);
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            string msg = ex.Message;
                        }

                    }
                }
            }
            ts.Add(t);
        }
        return ts;
    }
复制代码

 

posted @   极客船长  阅读(224)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示