2010-10-23 5 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 всегда забавны. –

Смежные вопросы