2014-01-29 35 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