2011-09-12 41 views
2

想,我有一個IEnumerable<Tuple<string, object>>,並且我想更換爲枚舉的每個元素的(幾個)其他元素的列表中的第一個元素:需要用的SelectMany一點幫助

Original enumerable: { { "a", obj1 }, { "b", obj2 } } 
First-element replacement: a -> { "c", "d" }, b -> { "e", "f", "g" } 
Result : { { "c", obj1 }, { "d", obj1 }, { "e", obj2 }, { "f" , obj2 }, { "g" , obj2 } } 

我怎樣才能比

enumerable.SelectMany(item => ReplacementFunction(item.Item1).Select(newItem => 
new Tuple<string, object>(newItem, item.Item2))) 
+2

定義「更好」? –

回答

7

那麼一種更好的方式與SelectMany做到這一點,我可能會使用一個查詢表達式來代替:

var query = from tuple in enumerable 
      from replacement in ReplacementFunction(tuple.Item1) 
      select Tuple.Create(replacement, tuple.Item2); 

但這就是基本上同樣的事情......

+4

絕對可讀性更高。 –