2015-11-23 33 views
1

我有一個{ string Key, IEnumerable<string> Values }項目的列表,並希望將其轉換爲{ string Key, string Value }項目的列表,以便新列表包含每個Keyn項。Select元素{key,values}的元素 - 獲得結果中的鍵?

我想使用LINQ和有想法使用SelectMany

list.SelectMany(item => item.Values) 

然而,正如你所看到的,我失去了Key與轉型。有什麼訣竅?我想這應該很容易,我只是缺少樹木,不見森林...

+1

我猜你需要做這樣的事情:https://stackoverflow.com/questions/6428940/how-to-flatten-nested-objects-with- linq-expression –

+3

'list.SelectMany(item => item.Values,(item,value)=> Tuple.Create(item.Key,value))' – PetSerAl

+0

是的,森林...樹...重載...謝謝! –

回答

-2

不是編譯代碼,但是這可能會回答你的問題

var finalList=list.SelectMany(item => item).Select(final => new{KeyName=item.Key,Coll=item.Values}).ToList();

0

我也碰到了這個大腦凍結。從留言中加入由@PetSerAl答案:

list.SelectMany(item => item.Values.DefaultIfEmpty(), (item, value) => Tuple.Create(item.Key, value))