Aaron挖了个坑 2016-02-01 07:39 采纳率: 0%
浏览 2344
已采纳

DataTable 类型转换为 List 类型

报错内容
图片说明

要转换的实体类 ID int类型,Name string 类型,这样报错的那两句要怎么写 ?

方法如下:
public static List ConvertToList(DataTable dt)
{

        // 定义集合
        List<T> ts = new List<T>();

        // 获得此模型的类型
        Type type = typeof(T);
        //定义一个临时变量
        string tempName = string.Empty;
        //遍历DataTable中所有的数据行
        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;//该属性不可写,直接跳出
                    //取值
                    object value = dr[tempName];
                   //如果非空,则赋给对象的属性
                    if (value != DBNull.Value)
                        pi.SetValue(t, value.ToString(), null);
                }
            }
            //对象添加到泛型集合中
            ts.Add(t);
        }

        return ts;

    }
  • 写回答

1条回答 默认 最新

  • threenewbee 2016-02-01 23:38
    关注

    pi.SetValue(t, int.Parse(value.ToString()), null);

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 树莓派安卓APK系统签名
  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波
  • ¥15 针对曲面部件的制孔路径规划,大家有什么思路吗