2010-10-23 85 views
2

我有一個字典使用LINQ像字典操縱在C#

Dictionary<String, List<String>> MyDict = new Dictionary<string, List<string>> 
{ 
    {"One",new List<String>{"A","B","C"}}, 
    {"Two",new List<String>{"A","C","D"}} 
}; 

我需要從這個字典得到List<String>,列表中應包含上述字典的值鮮明的項目。

所以得到的列表將包含{"A","B","C","D"}

現在我使用for循環和Union操作。像

List<String> MyList = new List<string>(); 
for (int i = 0; i < MyDict.Count; i++) 
{ 
    MyList = MyList.Union(MyDict[MyDict.Keys.ToList()[i]]).Distinct().ToList(); 
} 

任何人都可以建議我在LINQ或LAMBDA表達式中做到這一點。

回答

7
var items=MyDict.Values.SelectMany(x=>x).Distinct().ToList(); 

或替代:

var items = (from pair in MyDict 
      from s in pair.Value 
      select s).Distinct().ToList(); 
+0

哦,你打我:對。 Linq的問題總是很有趣。 – 2010-10-23 09:25:35