2012-07-02 86 views
0

我有一个List<List>。我想从中获取单个列表。从收藏品收藏

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

For循环是一个显而易见的解决方案,但我希望从性能角度来看更好,更高效。

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

性能方面几乎一样快,一个for循环。但在句法上更让人高兴。 – jessehouwing

+0

@Enigmativity仍然没有得到答案,请参阅editted问题的更多细节和实际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();