使用Linq合并List中对象方法返回的所有List

时间:2014-01-29 10:33:02

标签: c# linq

所以这是我的测试用例:

我有一个QuizzResult类,它包含用户选择的所有答案:

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

测试完成后,我有一个结果列表:

List<QuizzResult> allResult

所以我只想拥有所有QuizzResults的所有合并答案的列表(带有重复项)。

我试着环顾一下Select,但我有一个IEnumerable&gt;。我失败了我应该使用ForEach,但我不知道如何...

任何提示?

2 个答案:

答案 0 :(得分:10)

SelectMany会将您的列表列表压缩为一个可列举的答案:

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

List<int>使用ToList扩展方法,它会热切地阅读所有项目并创建List

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

答案 1 :(得分:1)

由于我的评论是必填答案,转而回答。

如果您希望将一组集合合并到一个集合中,您可以使用 SelectMany (MSDN)方法

allResult.SelectMany(x => x.Answers)

这将使用延迟执行,因此如果您希望立即对此进行评估,请在最后标记ToListToArray来电。在使用列表时,以下是ToList

的示例
 List<int> allAnswers = allResult.SelectMany(x => x.Answers).ToList();