1

私は Generic.Collection.List と Generic.Collection.Dictionary のようなものを持っています

List<String> MyList
Dictionary<String, List<String>> MyDictionary

MyDictionaryの intes に基づいてをフィルタリングする必要があります。MyListつまり、 のアイテムが of にある場合、その MyListアイテムは に追加されます。valueMyDictionaryMyFilteredDictionary

Dictionary<String, List<String>> MyFilteredDictionary

今、私は`for-foreachループを使ってこれをやっています

for (int l_nIndex = 0; l_nIndex < MyList.Count; l_nIndex++)
  {
    foreach (KeyValuePair<String, List<String>> l_objKeyValuePair in MyDictionary)
      {
         if (l_objKeyValuePair.Value.Contains(MyList[l_nIndex]) == true)
           {
             MyFilteredDictionary.Add(l_objKeyValuePair.Key, l_objKeyValuePair.Value);
             break;
            }
       }
  }

「ラムダ式」を使用して同じことを行うには?

4

2 に答える 2

6
var res = MyDictionary.Where(kvp => MyList.Any(item => kvp.Value.Contains(item)))
                      .ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
于 2012-08-02T11:00:21.603 に答える
0

あなたが何を望んでいるのか完全にはわかりませんが、これにより、リストにキーを持つ別の辞書の項目に基づいて、フィルター処理された項目の辞書が作成されます...

    MyFilteredDictionary = MyList
        .Where(MyDictionary.ContainsKey)
        .ToDictionary(item => item, item => MyDictionary[item]);
于 2012-08-02T10:52:41.407 に答える