2010-07-05 11 views
5

Biraz C# sorunum var.Sınıf dernekleri ve listeleri

public class ClassA 
{ 
    private ClassB b; 
    ClassB B; 
    { 
     get { return b; } 
     set { b = value; } 
    } 
} 

public class ClassB 
{ 
    /* some stuff */ 
} 

Gördüğünüz gibi, Sınıf A ClassB örneğini vardır: İki Bu şekilde tanımlanan sınıflar Sınıf A ve ClassB var.

Sorun, ClassA örneklerinin bir listesinden, ilgili ClassB örneklerinin listesine erişmek istiyorum. Sanırım bu şöyle olurdu:

IList<ClassA> listA = ...; 
IList<ClassB> listB = listA.???.B; 
Çözüm muhtemelen açıktır ancak bunu kendi başıma çözemiyorum.

Herhangi bir yardım için teşekkür ederiz!

+0

Hangi C# sürümünü çalıştırıyorsunuz? Örneğin, LINQ'a erişiminiz var mı? Eğer öyleyse, cevabımı görün. –

+0

LINQ erişimim var ve .NET 3.5 – Hal

cevap

4

Sen List.ConvertAll() kullanarak

IList<ClassB> listB = listA.Select(a => a.B).ToList(); 
+0

ile çalışıyorum İyi ve basit görünüyor. Deneyeceğim. – Hal

2

yapmak için LINQ kullanabilirsiniz:

List<ClassA> listA = ...; 
List<ClassB> listB = listA.ConvertAll(item => item.B); 
+1

Sadece biraz nitpicking ama ConvertAll sadece standart bir yöntemdir List sınıf bir uzantısı yöntemi değil: D –

+0

Doğru .... (düzenlenmiş cevap) – EricSchaefer

1
Kolayca aşağıdaki yollardan biriyle LINQ nesnelere ile bu yapabileceğini

:

var instancesOfClassB = from a in listOfClassA 
         select a.B; 

var instancesOfClassB = listOfClassA.Select(a => a.B); 
+0

Ucu için teşekkürler – Hal

1

Bunu yapabilirsiniz:

IList<B> listB = listA.ConvertAll(a => a.B); 

basittir ve ne yaptığını söyler.