C# C-“已添加具有相同键的元素”

C# C-“已添加具有相同键的元素”,c#,sql,asp.net,sql-server,asp.net-mvc-3,C#,Sql,Asp.net,Sql Server,Asp.net Mvc 3,我在ASP.NET MVC中工作,我被这个该死的错误包围在我的模型中,已经添加了一个具有相同密钥的元素,我完全不理解为什么我在模型的其他方法中有几乎相同的代码和不同的请求 我不认为问题可能来自于请求,因为我已经像以前一样在另一个项目中使用了herit public Dictionary<string,string> getDonnee() { Dictionary<string, string> list = new Dictionary<string, s

我在ASP.NET MVC中工作,我被这个该死的错误包围在我的模型中,已经添加了一个具有相同密钥的元素,我完全不理解为什么我在模型的其他方法中有几乎相同的代码和不同的请求

我不认为问题可能来自于请求,因为我已经像以前一样在另一个项目中使用了herit

public Dictionary<string,string> getDonnee()
{
    Dictionary<string, string> list = new Dictionary<string, string>();

    SqlConnection cn;
    SqlDataAdapter da;
    DataSet ds;

    cn = new SqlConnection(CS_DW);
    cn.Open();

    da = new SqlDataAdapter("select distinct(ltrim(rtrim(cpic))) as code, cpic as lib from [DW].[dbo].[PIC_PROD_S001] ", cn);
    ds = new DataSet();
    da.Fill(ds, "code");

    list.Add("REEL", "REEL");
    foreach (DataRow row in ds.Tables["code"].Rows)
    {
        list.Add(row["code"].ToString(), row["lib"].ToString());
    }

    cn.Close();
    return list;
 }

也许你可以测试他们是否已经在你的字典中输入了

if (!list.ContainsKey(row["code"].ToString())) 
{ 
    list.Add(row["code"].ToString(), row["lib"].ToString());
}

你在代码崩溃的时候调试过代码了吗?什么是重复键?可能数据库中也存在REEL?select distinct仅根据列列表返回不同的行。很可能您的数据集返回的代码列中有重复的值。不要使用Add,使用TryAdd。只需在调试器下运行,在异常时停止并检查行[code]的当前值即可-这是重复的。