2010-10-23 7 views
2

Je vais avoir un dictionnaire commeDictionnaire LINQ en 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"}} 
}; 

Je dois obtenir un List<String> de ce dictionnaire, la liste doit contenir les éléments Distinct des valeurs du dictionnaire ci-dessus. La liste résultante contiendra donc {"A","B","C","D"}.

Maintenant j'utilise l'opération for et l'opération Union. Comme

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

Quelqu'un peut-il me suggérer un moyen de le faire dans LINQ ou LAMBDA Expression.

Répondre

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

Ou une alternative:

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

Aw, tu me bats: p. Les questions de Linq sont toujours amusantes. –