把datareader转换成model public class Class2<T> where T :class ,new() { public T DoTransferType(IDataReader dr) { T model = new T(); int count = dr.FieldCount; PropertyInfo[] property_lst = model.GetType().GetProperties(); foreach (PropertyInfo property in property_lst) { for (int i = 0; i < count; i++) { if (!Convert.IsDBNull(dr[i]))//判断值是否为空 { string name = dr.GetName(i).ToUpper();//字段名 if (name.Equals(property.Name.ToUpper()))//判断字段名是否和model里的相等 { try { property.SetValue(model, dr.GetValue(i), null);//为model赋值 break; } catch { } } } } } return model; } bublic class Class2<T> where T :class,new()这一句话说明T要是一个类,并且可以实例化 class1为实体类,class2中包含转换的方法 List<Model.Class1> clsList = new List<Model.Class1>(); Model.Class1 cls = new Model.Class1(); Model.Class2<Model.Class1> cls2 = new Model.Class2<Model.Class1>(); string conn = "……"; string sql = "select……"; SqlConnection Connection = new SqlConnection(conn); SqlCommand cmd = new SqlCommand(sql,Connection); Connection.Open(); using (SqlDataReader dr = cmd.ExecuteReader()) { while (dr.Read()) { cls = cls2.DoTransferType(dr); clsList.Add(cls); } } Connection.Close();