//1.连接到SQL数据库里
        public newEmployees[] GetInfo()
        {
            SqlConnection sql = new SqlConnection();
            sql.ConnectionString = ConfigurationManager.ConnectionStrings["TeseConnectionString"].ToString();
            sql.Open();
            SqlDataAdapter da = new SqlDataAdapter();
            da.SelectCommand = new SqlCommand("select * from Employee", sql);
            DataSet ds = new DataSet();
            da.Fill(ds);
            List<newEmployees> em = null;
            foreach (DataRow dr in ds.Tables[0].Rows)//本想让em得到ds.Tables[0].Rows所有记录。但由于em=new List<newEmployees>导致最后每次循环都new 了一下,最后的结果也就只有一个了。我应该怎么改??
            {
                 em = new List<newEmployees>()
                {                    new newEmployees{EmployeeID=dr[0].ToString(),EmployeeAge=dr[1].ToString(),EmployeeName=dr[2].ToString()}};
            }            return em.ToArray();
        }

解决方案 »

  1.   

    把 em = new List<newEmployees>()
    放foreach上面不行吗?
      

  2.   

    你在foreach语句里面每次都是重新new一个List<newEmployees>,所以就不对了
    在foreach外面new好以后,在foreach里面直接调用add方法不可以吗?
      

  3.   


     em = new List<newEmployees>(); 
    foreach (DataRow dr in ds.Tables[0].Rows)//本想让em得到ds.Tables[0].Rows所有记录。但由于em=new List<newEmployees>导致最后每次循环都new 了一下,最后的结果也就只有一个了。我应该怎么改??
                {
                    
                    {                   em.Add( newEmployees{EmployeeID=dr[0].ToString(),EmployeeAge=dr[1].ToString(),EmployeeName=dr[2].ToString());
                }
      

  4.   

           List<newEmployees> em = new List<newEmployees>();
                foreach (DataRow dr in ds.Tables[0].Rows
                {
                     
                 newEmployees  nem= new newEmployees{EmployeeID=dr[0].ToString(),EmployeeAge=dr[1].ToString(),EmployeeName=dr[2].ToString()}};
                
                em.Add(nem);
           
    }
       return em.ToArray();
      

  5.   

    但由于em=new List<newEmployees>导致最后每次循环都new 了一下,最后的结果也就只有一个了。我应该怎么改??
    你既然都知道问题了,那就把实例化的部分放到foreach外面不就可以了吗~