如何合并Generic.Collection.List和Generic.Collection.Dictionary

Tho*_*eld 1 c# linq lambda dictionary list

我有一个Generic.Collection.List和Generic.Collection.Dictionary之类的

List<String> MyList
Dictionary<String, List<String>> MyDictionary
Run Code Online (Sandbox Code Playgroud)

我需要的筛选MyDictionary基础上,INTES的MyList,即如果一个项目MyList是在valueMyDictionary,那么该项目将被添加到MyFilteredDictionary.

Dictionary<String, List<String>> MyFilteredDictionary
Run Code Online (Sandbox Code Playgroud)

现在我通过使用`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;
            }
       }
  }
Run Code Online (Sandbox Code Playgroud)

使用`Lambda Expression如何做同样的事情?

max*_*max 6

var res = MyDictionary.Where(kvp => MyList.Any(item => kvp.Value.Contains(item)))
                      .ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
Run Code Online (Sandbox Code Playgroud)