-2

我有一个问题,我创建了一个基于 WFC 的服务,在该服务中,我根据数据库中的值创建了一个列表。这是我的代码:

公共列表 loadrGenera() {

        string dbStr = HostingEnvironment.MapPath(@"~/App_Data/Database2.mdb;");
        string connStr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dbStr;
        OleDbConnection conn = new OleDbConnection(connStr);
        OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM Genera;", conn);
        DataSet ds = new DataSet();
        adapter.Fill(ds);
        List<Genera> GeneraLis = new List<Genera>();
        Genera Generaob = new Genera();

        foreach (DataRow dr in ds.Tables[0].Rows)
        {
            Generaob.name = dr["Name"].ToString();
            Generaob.generaId = Convert.ToInt32(dr["GeneraID"].ToString());

            GeneraLis.Add(Generaob);


        }

        return GeneraLis;
    }

问题是,当我调用服务时,列表中的所有数据都会重复,例如,如果我有

1-小说 2-剧情 3-动作

该方法将返回

3-动作 3-动作 3-动作

总是最后一个重复,我不知道我做错了什么,有人可以解释一下吗?tnx

4

1 回答 1

2

您一遍又一遍地编辑同一个 Genera 实例。您应该在循环中实例化一个对象:

    Genera Generaob;
    foreach (DataRow dr in ds.Tables[0].Rows)
    {
        Generaob = new Genera()
        Generaob.name = dr["Name"].ToString();
        Generaob.generaId = Convert.ToInt32(dr["GeneraID"].ToString());

        GeneraLis.Add(Generaob);
    }
于 2013-05-08T23:01:47.513 回答