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是在value的 MyDictionary,那么该项目将被添加到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如何做同样的事情?
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)