2012-07-02 84 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();