将多个IEnumerable对象视为单个IEnumerable

时间:2010-06-12 00:56:42

标签: c# linq join

我的问题似乎很容易,但我无法理解。

假设我有一个“根”IEnumerable对象。每个对象都有IEnumerable字符串。我怎样才能获得这些字符串的单个IEnumerable?

可能的解决方案是:

public IEnumerable<string> DoExample()
{
    foreach (var c in rootSetOfObjects)
    {
        foreach (var n in c.childSetOfStrings)
        {
            yield return n;
        }
    }
}

但也许Linq有一个神奇的解决方案?

2 个答案:

答案 0 :(得分:5)

rootSetOfObjects.SelectMany(o => o.childSetOfStrings)

答案 1 :(得分:1)

Linq中的SelectMany应该适合您: http://msdn.microsoft.com/en-us/vcsharp/aa336758.aspx#SelectManyCompoundfrom1

它肯定适用于您的收藏和复合收藏