В настоящее время у меня есть Dictionary<Key, IEnumerable<Value>>
, и я хочу его развернуть, поэтому он станет Dictionary<Key, Value>
.Расширение IDictionary <Key, IEnumerable <Value>>
Делать это с помощью простого цикла Еогеасп легко, но и грязный:
var result = new List<KeyValuePair<Key, Value>>();
foreach(var kvp in dict)
{
foreach(var v in kvp.Value)
{
result.Add(new KeyValuePair<Key, Value>(kvp.Key, v));
}
}
Теперь я хотел бы, чтобы преобразовать это в одном запросе LINQ, и предпочтительно с использованием синтаксиса лямбда. (В настоящее время не используется синтаксис выражения везде в проекте, и не чувствую, начиная с сегодняшнего дня)
Это должно взорвать вас, поскольку словари поддерживают только одно значение за ключ. Вам нужен MultiDictionary, и нет такой вещи, встроенной в библиотеки базового класса. – Trillian
Прежде всего, вы не протестировали цикл, который вы пытаетесь преобразовать в запрос Single LINQ. Это вызовет исключение «Key Already Exists» при первом значении IEnumerable с более чем одним членом. –
@Trillian @BolucPapuccuoglu Хорошая точка, я должен, вероятно, изменить ее на '' IEnumerable> '' –
Kippie