2012-10-14 67 views
0

內名單我有兩個對象模型,看起來像這樣:越來越嵌套模式

public class MyObject 
{ 
    public List<SomeOtherObject> TheListOfSomeOtherObjects { get; set; } 
} 

public class SomeOtherObject 
{ 
    long SomeOtherObjectID { get; set; } 
} 

而且我有一個名爲ListOfMyObjectsMyObjects一個列表,從中我想提取所有SomeOtherObjectID是裏面列出TheListOfSomeOtherObjects

我想寫的東西是這樣的:

var ListOfAllSomeOtherObjectID = (from l in ListOfMyObjects 
          select l.SomeOtherObject.SomeOtherObjectID).ToList(); 

它的工作不是因爲Ø語法。我如何獲得嵌套列表的列表?

感謝您的建議。

回答

1

你試圖壓平嵌套列表:

var allChildren = myObjects.SelectMany(o => o.ChildObjects).ToList(); 

然後,如果您想獲得這些對象的屬性,你需要一個單獨的Select()電話:

var allChildren = myObjects.SelectMany(o => o.ChildObjects) 
          .Select(c => c.SomeProperty) 
          .ToList(); 
+0

其實,我想要所有孩子的SomeOtherObjectID。我試過(o => 0.ChildObject.SomeOtherObjectID),但它不接受它。 – frenchie

+0

好的,明白了,謝謝你的回答;現在我知道了SelectMany是如何工作的!謝謝。 – frenchie

-1

嘗試它

var listSOOIds = listOfMyObjects.TheListOfSomeOtherObjects.Select(s => s.SomeOtherObjectID).ToList(); 
0

你可以象下面這樣:

var ids = l.SelectMany(o => o.TheListOfSomeOtherObjects).Select(o => o.SomeOtherObjectID); 

SelectMany從列表列表中創建展平列表。

如果您需要列表,請添加ToList()