集合像字典<k,v =“”>允许值更改</k,>

时间:2012-10-31 15:51:37

标签: c# dictionary

我理解为什么没有内置的方法来执行此操作,但是我想要一个集合对象,它允许在枚举期间更改

想象一下:

Dictionary<string, List<string>> test =  new Dictionary<string, List<string>> {{"key", null}};

假设我在一个实现IEnumberable

的类中有20个

我想使用lambda或简单的foreach来遍历类,找到匹配键的对象,然后将List<T>与Value参数一起存储。

4 个答案:

答案 0 :(得分:0)

您可以完全避免使用枚举器,例如

var data = myEnumerable.ToArray();
for(var i = 0; i < data.Length; i++) {
    // here you can manipulate data[i] to your heart's content
}

答案 1 :(得分:0)

由于您发现无法通过DictionaryEntry属性更改Value,因此您必须使用Item浏览Key访问者。

一种选择是将您的Where结果转换为数组,然后循环以获得匹配的Key

Dictionary<string, List<string>> test =  new Dictionary<string, List<string>>
                                             {{"key", null}};
test.Add("newKey",null);

var matches = test.Where(di => di.Key == "key").ToArray();

foreach(var di in matches) {
    test[di.Key] = new List<string> {"one","two"};

答案 2 :(得分:0)

您可能正在寻找名为multimap的集合。有关我的实施,请参阅here

答案 3 :(得分:0)

您可以使用它来修改字典中的值:

public static void ChangeValue(string indexKey,List<string> newValue)
{
     if (test.ContainsKey(indexKey))
         keysDictionary[indexKey] = newValue;
}