0

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

想象一下:

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

假设我在一个实现 IEnumberable 的类中有 20 个

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

4

4 回答 4

0

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

var data = myEnumerable.ToArray();
for(var i = 0; i < data.Length; i++) {
    // here you can manipulate data[i] to your heart's content
}
于 2012-10-31T15:57:33.007 回答
0

正如您发现的那样,您无法DictionaryEntry通过Value属性更改 a - 您必须Item使用Key.

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

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"};
于 2012-10-31T16:11:33.613 回答
0

您可能正在寻找一个名为multimap的集合。请参阅此处了解我的实现。

于 2012-10-31T16:19:11.433 回答
0

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

public static void ChangeValue(string indexKey,List<string> newValue)
{
     if (test.ContainsKey(indexKey))
         keysDictionary[indexKey] = newValue;
}
于 2012-10-31T16:29:33.393 回答