2013-10-24 3 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

Вопрос не ясен. Вы пытаетесь отфильтровать «Список '? Вы можете использовать '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>.

Смежные вопросы