0

これを行うためのメソッドが組み込まれていない理由は理解していますが、列挙中に値を変更できるコレクション オブジェクトが必要です

次のことを想像してください。

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

IEnumberable を実装するクラス内にこれらが 20 個あるとします。

ラムダまたはシンプルを使用foreachしてクラスを反復処理し、キーに一致するオブジェクトを見つけてからList<T>、値パラメーターを使用して保存したいと思います。

4

4 に答える 4

0

これを使用して、辞書の値を変更できます。

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

multimapというコレクションを探しているかもしれません。私の実装については、こちらを参照してください。

于 2012-10-31T16:19:11.433 に答える
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を介してa を変更することはできません ..ValueItemKey

1 つのオプションは、Where結果を配列に変換し、ループして一致するKeys を取得することです。

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 に答える