2013-10-24 73 views
1

我需要使用linq(lambda)返回列表中的列表,但是仍然沒有獲得所需的語法。使用Linq獲取列表中的列表

我有一個我想要查詢的WikiMeta列表,並將所有WikiGroups作爲新列表返回。

注意:某些屬性已從清晰度中刪除。

List<WikiMeta> Meta; 

public class WikiMeta 
{ 
    public List<WikiGroup> Groups = new List<WikiGroup>(); 
} 

public class WikiGroup 
{ 
    public string Name { get; set; } 
} 
+0

問題還不清楚。你想過濾一個'List '嗎?您可以使用'Where' –

+2

您可能正在尋找'SelectMany',如:'Meta.SelectMany(m => m.Groups);' –

回答

5

你可以讓他們所有的使用SelectMany平面列表:

var groups = meta.SelectMany(m => m.Groups).ToList(); 

這會給你一個List<WikiGroup>

Documentation for SelectMany.

您可以執行你想在主List<WikiMeta>這樣任何查詢:

var filteredGroups = meta 
    .Where(m => m.IsActive) // Fictional "IsActive" boolean property. 
    .SelectMany(m => m.Groups) 
    .ToList(); 

使用這種流暢風格的功能性的方法來查詢的集合,你可以開始建立更復雜的查詢。

如果您希望延遲查詢,直到迭代,請刪除ToList,這會給您一個IEnumerable<WikiGroup>