C# C列表获得相同的值

C# C列表获得相同的值,c#,list,C#,List,哦,请有人给我解释一下为什么会这样 public List<EmployeeHeader> GetEmployees() { List<EmployeeHeader> eh = new List<EmployeeHeader>(); string query = "SELECT " + " firstName, lastName " +

哦,请有人给我解释一下为什么会这样

public List<EmployeeHeader> GetEmployees()
        {
            List<EmployeeHeader> eh = new List<EmployeeHeader>();
            string query = "SELECT " +
                           "     firstName, lastName " +
                           "FROM" +
                           "     tbEmployee ";

            DBConnect db = new DBConnect();
            DataTable dt = new DataTable();
            dt = db.getBD(query);

            int CountRows = dt.Rows.Count;

            EmployeeHeader emp = new EmployeeHeader();

            for(int i = 0; i < CountRows; i++)
            {
                emp.firstName = dt.Rows[i]["firstName"].ToString();
                emp.lastName = dt.Rows[i]["lastName"].ToString();
                eh.Add(emp);
            }

            return eh;
最终的结果是

<ArrayOfEmployeeHeader xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.istec.pt/">
<EmployeeHeader>
<firstName>Hugo</firstName>
<lastName>Almeida</lastName>
</EmployeeHeader>
<EmployeeHeader>
<firstName>Hugo</firstName>
<lastName>Almeida</lastName>
</EmployeeHeader>
<EmployeeHeader>
<firstName>Hugo</firstName>
<lastName>Almeida</lastName>
</EmployeeHeader>
<EmployeeHeader>
<firstName>Hugo</firstName>
<lastName>Almeida</lastName>
</EmployeeHeader>
<EmployeeHeader>
<firstName>Hugo</firstName>
<lastName>Almeida</lastName>
</EmployeeHeader>
</ArrayOfEmployeeHeader>
永远是同一个名字!!!我已经调试过了,一步一步地,正确的名字正在进入列表,但最后。。。我有相同的名字

可能是个愚蠢的错误,但请有人帮我指一下好吗


谢谢

您正在设置同一实例的属性。将下面的行放在循环内:

EmployeeHeader emp = new EmployeeHeader();
像这样试试

for(int i = 0; i < CountRows; i++)
        {
            EmployeeHeader emp = new EmployeeHeader();
            emp.firstName = dt.Rows[i]["firstName"].ToString();
            emp.lastName = dt.Rows[i]["lastName"].ToString();
            eh.Add(emp);
        }
        for(int i = 0; i < CountRows; i++)
        {
            EmployeeHeader emp = new EmployeeHeader();
            emp.firstName = dt.Rows[i]["firstName"].ToString();
            emp.lastName = dt.Rows[i]["lastName"].ToString();
            eh.Add(emp);
        }
for(int i = 0; i < CountRows; i++)
        {
            EmployeeHeader emp = new EmployeeHeader();
            emp.firstName = dt.Rows[i]["firstName"].ToString();
            emp.lastName = dt.Rows[i]["lastName"].ToString();
            eh.Add(emp);
        }