c# WCF服务正在复制列表中的数据值<>

本文关键字:数据 列表 服务 WCF 复制 | 更新日期: 2023-09-27 18:12:38

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

public List 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-Fiction2-Drama三招

方法将返回

三招三招三招

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

c# WCF服务正在复制列表中的数据值<>

您一遍又一遍地编辑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);
    }