2011-09-20 24 views
7

A sınıfı bir listemiz var, A sınıfı, B sınıfının bir listesini içerir.'un tüm örneklerinde A sınıfının tüm örneklerinde çalışmak istiyorum.Linq - listelerin listelerinde çalışan

var myListOfA = new List<A>(); 

class A 
{ 
    public List<B> ListOfB; 
} 

Ben adımlayabilirsiniz nasıl tüm B yani foreach(var b in myListOfA.ListOfB){} ?

cevap

9

Sen SelectMany kullanabilirsiniz:

foreach(var b in myListOfA.SelectMany(a => a.ListofB)) 

ideone.com de görün Yürüt. i iç içe nesnelerin nasıl düşündükleri için iyi çalışır

+1

Ahh, Çalışmamış olan 'Seç' denedim (şimdi bariz görünüyor), dikkat edin. Teşekkürler. – Chris

2

başka bir yoludur:

(from A objA in myListOfA 
    from B objB in objA.ListOfB 
     select objB); 

bu irade "fan dışarı" ana listedeki tüm bir yıllardan içinde b yılların listesi.

+0

Bunun “SelectMany” için sözdizimsel şeker olduğuna dikkat edin, fakat kabul ediyorum, bazen daha okunabilir. – Jens

+0

evet kesinlikle selectmany kullanmanın başka bir yolu, sadece referans amacıyla burada istedim –

İlgili konular