2015-03-24 3 views
2

Существует этот ответ на queryКак преобразовать список словарей в IDictionary «C#»

Я пытаюсь понять, что поместить в этот сегмент LINQ

pair => pair.Key, pair => pair.Value 

Моя точное определение списка является это:

List<Dictionary<string, StockDetails>> myList = new List<Dictionary<string, StockDetails>>(); 

Это то, что я пытался, но это было помечено на ошибки сборки:

IDictionary<string, StockDetails> dictionary = myList.ToDictionary(myList => myList.Key, pair => myList.Value); 

Как уже говорилось, я просто пытаюсь понять это LINQ роль в том, чтобы правильно определить его для успешной сборки:

myList => myList.Key, pair => myList.Value); 

Мои ошибки сборки являются

Error 7 'System.Collections.Generic.Dictionary<string,xx.Models.StockDetails>' does not contain a definition for 'Key' and no extension method 'Key' accepting a first argument of type 'System.Collections.Generic.Dictionary<string,xx.Models.StockTickerDetails>' could be found (are you missing a using directive or an assembly reference?) 

    xxxx  
Error 9 'System.Collections.Generic.List<System.Collections.Generic.Dictionary<string,xx.Models.StockTickerDetails>>' does not contain a definition for 'Value' and no extension method 'Value' accepting a first argument of type 'System.Collections.Generic.List<System.Collections.Generic.Dictionary<string,xx.Models.StockDetails>>' 
could be found (are you missing a using directive or an assembly reference?) 

Спасибо за любую помощь

+0

Итак, у вас есть список словарей и вы хотите преобразовать этот список в единый консолидированный словарь? – poke

+0

Я удалил свой ответ, потому что я неправильно понял вопрос. Пожалуйста, укажите сообщение об ошибке (которое, как я подозреваю, связано с представлением 'myList', когда оно уже находится в области видимости) и сообщите нам, чего вы пытаетесь достичь. Я думал, что у вас есть список пар ключ/значение, но теперь у вас есть список словарей ... –

+0

Я добавил свои ошибки в соответствии с запросами. Спасибо за отзывы до сих пор –

ответ

4

Кроме того, вы можете попробовать что-то вроде этого:

IDictionary<string, StockDetails> result = myList.SelectMany(d => d).ToDictionary(e=>e.Key,e=>e.Value); 

SelectMany проецирует каждый словарь в виде последовательности, и он сглаживает полученные последовательности в одну последовательность со всеми элементами, которые у вас есть в словарях, поэтому результат вызова этого метода - IEnumerable<KeyValuePair<string, StockDetails>>. Затем вы можете вызвать метод ToDictionary как ответ, который вы ранее использовали quote с целью преобразования результирующей последовательности в Dictionary<string,StockDetails>.

+0

Извините, ни один из ответов не дает, как создать мой IDictionary не результат словаря. –

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