2011-03-26 14 views
5

Bir elemanın içinde birkaç tane içerdiği hiyerarşik bir IEnumerable koleksiyonum var. Dolayısıyla, eğer bir sayı yaparsam, gerçekten de 500 öğe (iç içe oldukları gibi) olabileceği için, dönüş int olarak 7-8 alabilirim.Nesnelerin bir koleksiyonunu nasıl düzleştirebilirim (bu da koleksiyonları içerir)?

Bu koleksiyonu, tüm öğelerle birlikte bir koleksiyona ve yuvalama olmadan nasıl düzleştirebilirim?

Teşekkür smallEnumerable kendisini aynı türden öğelerin bir enumerator olan bir özellik SubItems sahip olan her biri 7-8 öğeleri ile toplama olduğunu varsayarsak

+0

Listeniz döngüler içeriyorsa, aşağıdaki çözümü kullanabilirsiniz: http://stackoverflow.com/questions/141467/recursive-list-flattening/24747394#answer-24747394 – Aidin

cevap

13

, o zaman böyle dümdüz:

SubItems her biri SubItems kendisini olabilir Eğer
var flattened = smallEnumerable.SelectMany(s => s.SubItems); 

ardından bazı özyineleme sırada bulunuyor:

IEnumerable<MyType> RecursiveFlatten(IEnumerable<MyType> collection) 
{ 
    return collection.SelectMany(
     s => s.SubItems.Any() ? s.Concat(RecursiveFlatten(s.SubItems)) : s); 
} 
İlgili konular