2012-07-02 4 views
0

У меня есть List<List>. Я хочу получить из него один Список.Сделайте коллекцию из коллекции коллекции

List<int> from List<List<SomeClass>() 

Для цикла это очевидное решение, но я хочу, чтобы что-то более лучшее и достойное с точки зрения производительности.

List<List<Employee>> ValueLists; 

List<int> Current= ValueLists.SelectMany(u=>u.Select(v=>v.EmployeeID)); 

ответ

4

Попробуйте это:

var list = listOfLists.SelectMany(x => x).ToList(); 

Я не уверен, что именно то, что дополнительная информация вам нужно. Редактирование, сделанное вами в вопросе, - это почти полный код.

Вы должны быть написаны:

List<int> Current = 
    ValueLists 
     .SelectMany(u => u.Select(v => v.EmployeeID)) 
     .ToList(); 

Это может быть записано как это вместо:

var query = 
    from u in ValueLists 
    from v in u 
    select v.EmployeeID; 

List<int> Current = query.ToList(); 

Возможно, что дает больше ясности.

+1

Performance мудрой примерно так же быстро, как forloop. Но синтаксически намного приятнее для глаз. – jessehouwing

+0

@ Энигматичность. Не получайте ответа. Пожалуйста, просмотрите измененный вопрос для получения более подробной информации и фактического scanraio. – MegaMind

0

До сих пор не получить ответ, пожалуйста, см Editted вопрос для более деталей и фактического сценария:

List<List<Employee>> ValueLists; 
List<int> Current= ValueLists.SelectMany(u=>u.Select(v=>v.EmployeeID)); 

Ваш подход не работает, потому что IEnumerable<int> не List<int>. Для этого вам нужно ToList() в конце.

Это должно работать:

List<int> Current = ValueLists.SelectMany(u => u.Select(e => e.EmployeeID)).ToList(); 
0

насчет:

var list = listOfLists.SelectMany(x => x.EmployeeID).ToList(); 
Смежные вопросы