首先谢谢各位来捧场。 说一下我的需求:  大概是通过反射分组来求合。 在数据库中的结构是这样的:  ProduceName: 存储过程名称  ParamenName:参数名 ParameType:参数类型(比如int,varchr之类的)    我要写一个通用的方法: 首先从数据库中取到存储过程名称,ParamenName,ParameType , 执行并得到一个DataTable, 问题来了, 如果DataTable中的其中一列,是int或float之类的话(可以根据存在数据库中的ParameType知道是哪种类型)。则要新生成一列,根据这列求合。比如产品数量这列dr["ProductCount"]是int的话,则要新增一列,根据这列求合,再将求合出来的值赋予新增列的ProductCount字段, 不知道我这样说大家明白不。 

解决方案 »

  1.   

    datatable反射生成List<T>
    public static IList <T> ConvertToModel(DataTable dt) 
            { 
                IList <T> lst= 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; 
                          if (dt.Columns.Contains(tempName)) 
                        { 
                            if (!pi.CanWrite) continue; 
                            object value = dr[tempName]; 
                            if (value != DBNull.Value) 
                                pi.SetValue(t, value, null); 
                        } 
                    } 
                    lst.Add(t); 
                } 
                return ts; 
            } 
        } 
      

  2.   

    2 楼的.  我是一个通用的方法. IList <T> 中的T没有指定的类.