Управление словарями с помощью LINQ в C # - PullRequest
2 голосов
/ 23 октября 2010

У меня есть словарь типа

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.

1 Ответ

7 голосов
/ 23 октября 2010
var items=MyDict.Values.SelectMany(x=>x).Distinct().ToList();

Или альтернатива:

var items = (from pair in MyDict
             from s in pair.Value
             select s).Distinct().ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...