2010-07-05 19 views
5

我有一點C#問題。我有兩種ClassA和ClassB這樣定義:類協會和列表

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

public class ClassB 
{ 
    /* some stuff */ 
} 

正如你所看到的,ClassA有一個ClassB的實例。

從ClassA實例列表中,我想訪問相應的ClassB實例列表。我想這應該是這樣的:

IList<ClassA> listA = ...; 
IList<ClassB> listB = listA.???.B; 

該解決方案可能是明顯的,但我不能自己搞清楚。

任何幫助,將不勝感激!

+0

你正在運行哪個c#版本?例如,您是否可以訪問LINQ?如果是這樣,請參閱我的答案。 – 2010-07-05 09:04:40

+0

我有權訪問LINQ,並且正在使用.NET 3.5。 – Hal 2010-07-05 09:10:00

回答

4

你可以使用LINQ做

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

它看起來不錯並且非常簡單。我會試試看。 – Hal 2010-07-05 09:11:13

2

使用List.ConvertAll():

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

只是有點挑剔,但ConvertAll只是一個標準方法的名單類不是擴展方法:D – 2010-07-05 09:09:35

+0

你是對的....(編輯答案) – EricSchaefer 2010-07-05 09:11:14

1

你可以很容易地使用LINQ這樣對對象中的下列方式之一:

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

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

感謝您的提示 – Hal 2010-10-28 07:29:52

1

您可以這樣做:

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

這很簡單,並說它做了什麼。