T是实体来得 EITCN.Model.User  继承了 Model.Entitypublic class ABC<T> where T : EITCN.Model.Entity, new()
    {
        public List<T> List() 
        {
            using (IDataReader dr = EITCN.Data.DatabaseCommon.DbHelperInstance.ExecuteReader(CommandType.Text, string.Format("Select * From [{0}]", Entity.TableName)))
            {
                while (dr.Read())
                {
                    
                }
            }
            return 这里怎么样返回一个List<EITCN.Model.User>;
        }
    }

解决方案 »

  1.   

    List<EITCN.Model.User> UsList=new list<EITCN.Model.User>();
    using (IDataReader dr = EITCN.Data.DatabaseCommon.DbHelperInstance.ExecuteReader(CommandType.Text, string.Format("Select * From [{0}]", Entity.TableName)))
     while (dr.Read())
       {
         EITCN.Model.User   us =new EITCN.Model.User();
    us.XXX=XXX;
    UsList.add(us)
      }return UsList;
     
      

  2.   

    如果你的实体属性名和数据库字段名有一定的规律。你可以用反射获取。 因为你的泛型约束,限制T必须是Entity的子类。
    比如说:你的属性名和字段名相同
     List<T> list = new List<T>();
                using (dr)
                {
                    Type modelType = typeof(T);
                    while (dr.Read())
                    {
                        T model = Activator.CreateInstance<T>();
                        for (int i = 0; i < dr.FieldCount; i++)
                        {
                            PropertyInfo pi = modelType.GetProperty(dr.GetName(i));
                           if(pi!=null)
                            pi.SetValue(model, Convert.ChangeType(dr[i], pi.PropertyType), null);
                        }
                        list.Add(model);
                    }
                }
      

  3.   

                List<T> list = new List<T>();
                using (dr)
                {
                    if (dr.HasRows)
                    {   
                        //获取列集合                 
                        var dataColumns = dr.GetSchemaTable().Rows.Cast<DataRow>().Select(row => row[0].ToString()).ToList();
                        //获取属性集合
                        PropertyInfo[] properties = typeof(T).GetProperties();
                        while (dr.Read())
                            list.Add(GetModelByDataReader<T>(dr, dataColumns, properties));
                        dr.Close();                    
                    }
                }
                return list;
      

  4.   

    我们不知道你的Model.Entity,又没有特殊支持比如EF自己就有把dr转换为list<T>的支持假设你的Model.Entity本身并没有任何有关映射方面的东西,那你只好自己手工转译了List<T> res=new List<T>();
    while (dr.Read())
    {
      T obj=new T();
      //接着是对于转换过程,如果有映射信息,按映射信息来,如果没有但是字段完全一致,可以用反射。如果字段不一致,请手工转换
      res.add(obj);
    }
      

  5.   

    这个没有什么泛型的,不用用泛型算了。直接返回一个user实体