通过循环重新分配字典元素

时间:2014-01-16 14:08:00

标签: c# loops dictionary assign

我有一本词典。我已经使用循环在字典中添加元素,并通过代码随时间更改它们。如何将元素恢复为初始值? 我的代码:

//for adding to the dictionary
Dictionary<string, string> D = new Dictionary<string, string>();

for(i=0; i<DataSet1.Tables[0].Rows.Count; i++)
{
    row = DataSet1.Tables[0].Rows[i];
    id[i]=row["UserID"].ToString(); 

    D.Add(id[i], "absent");
}   

//for reassigning back to absent
for(int i =0; i<D.Count; i++) D[i.ToString()]="absent";

我的重新分配循环而不是重新分配似乎只是添加新元素。最初计算大约1000并且在重新分配循环之后它大约是3000 .. P.S。使用c# 请帮忙

2 个答案:

答案 0 :(得分:2)

您可以枚举词典的键并设置条目值:

foreach(string key in D.Keys.ToArray())
    D[key] = "absent";

也可以将字典的创建简化为(借助Linq to DataSet):

var D = DataSet1.Tables[0].AsEnumerable()
                .ToDictionary(r => r.Field<string>("UserID"),
                              r => "absent");

答案 1 :(得分:1)

尝试一下:

foreach(var key in d.Keys.ToArray())
{
    d[key] = "absent";
}

需要.ToArray(),因为如果您尝试直接迭代foreachd.Keys循环将在第二次迭代之前抛出错误。