2014-01-29 36 views
2

所以這是我的測試用例:使用LINQ to合併的對象的方法以列表的所有列表

我有一個類QuizzResult持有用戶choosen所有的答案:

public class QuizzResult 
{ 
    public List<int> Answers { get; set; } 
} 

當測試完成後,我有一個結果列表:

List<QuizzResult> allResult 

所以我只是想將所有QuizzResults的所有合併的答案的列表(一式兩份)。

我試圖環顧Select,但我有一個IEnumerable>。我倒了,我應該使用ForEach,但我不知道如何...

任何提示?

+3

一個例子你只是想'allResult.SelectMany(X => x.Answers)'; –

+0

是的,謝謝! – Thomas

+0

我已經添加了這個答案。 –

回答

10

SelectMany將彙整清單列表插入一個答案單一的枚舉:

IEnumerable<int> allAnswers = allResult.SelectMany(quizz => quizz.Answers); 

要獲得List<int>使用ToList擴展方法,這將熱切地閱讀所有的項目,並創建一個List

List<int> allAnswers = allResult.SelectMany(quizz => quizz.Answers) 
           .ToList(); 
+0

只是完美的答案,謝謝! – Thomas

1

正如我的評論是所需的答案,轉換爲答案。

當您希望集合的集合合併成一個單一的集合,你可以使用 SelectMany(MSDN)方法

allResult.SelectMany(x => x.Answers) 

所以如果你想馬上對這個這將使用DEFERED執行,標記一個ToListToArray呼叫結束。當您使用的列表,這裏是ToList

List<int> allAnswers = allResult.SelectMany(x => x.Answers).ToList(); 
+0

你值得擁有這個+1,謝謝! – Thomas