所以这是我的测试用例:
我有一个QuizzResult类,它包含用户选择的所有答案:
public class QuizzResult
{
public List<int> Answers { get; set; }
}
测试完成后,我有一个结果列表:
List<QuizzResult> allResult
所以我只想拥有所有QuizzResults的所有合并答案的列表(带有重复项)。
我试着环顾一下Select,但我有一个IEnumerable&gt;。我失败了我应该使用ForEach,但我不知道如何...
任何提示?
答案 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)
这将使用延迟执行,因此如果您希望立即对此进行评估,请在最后标记ToList
或ToArray
来电。在使用列表时,以下是ToList
List<int> allAnswers = allResult.SelectMany(x => x.Answers).ToList();