定义了一个A类,有各种属性。
在定义一个B类,里面有SMB()方法。
public static List<A> SMB()
        {
            SqlConnection con = new SqlConnection("********");/
            con.Open();
            SqlCommand com = new SqlCommand("select id,zie from yysk", con);
            SqlDataReader dr = com.ExecuteReader();//执行SQL语句
             return dr;//这里报错,请问我怎么转化成list<A>类型
          }

解决方案 »

  1.   

    public class MyObj
     {
         public string Name;
         public double Value;
     }            List<MyObj> result;
                 using (var conn = new OracleConnection(cnStr))
                 {
                     conn.Open();
                     var comm = conn.CreateCommand();
                     comm.CommandText = "select e.TheName, e.Number from Users as e where ..........";
                     comm.CommandType = System.Data.CommandType.Text;
                     result = ( from DbDataRecord record in comm.ExecuteReader()                             select new MyObj{ 
                                                 Name = (string)record["TheName"],
                                                 Value = (double)record["Number"]
                                            };
                              ).ToList();
                 }  
      

  2.   

    comm.ExecuteReader() 返回的类型是 IEnumerable<DbDataReader>,因此可以使用result = (from DbDataRecord record in comm.ExecuteReader()                              
              select new MyObj{ 
                    Name = (string)record["TheName"],
                    Value = (double)record["Number"]
                 }
             ).ToList();
      

  3.   

    result = (from DbDataRecord record in comm.ExecuteReader()                              
    中的DbDataRecord用sql是怎么写,我写成SqlDataRecord后,提示没有命名空间。
    但是我真找不到用什么命名空间
      

  4.   

    还真找不到。result = (from DbDataRecord record in comm.ExecuteReader()                              
    中的DbDataRecord用sql是怎么写,我写成SqlDataRecord后,提示没有命名空间。
    但是我真找不到用什么命名空间