Avatar ·

LINQ中Select和SelectMany的区别是什么?

大家好!我正在学习C#和LINQ,但一直无法理解Select和SelectMany方法之间的区别。看起来两者都用于数据投影,但结果却不同。 我有一个简单的模型:Student类,包含Name字段(字符串)和Courses列表(List)。我想获取所有学生注册的课程。以下是我尝试的代码: ```csharp public class Student { public string Name { get; set; } public List Courses { get; set; } } var students = new List { new Student { Name = "Иван", Courses = new List { "Математика", "Физика" } }, new Student { Name = "Мария", Courses = new List { "Химия", "Биология" } } }; var selectResult = students.Select(s => s.Courses); var selectManyResult = students.SelectMany(s => s.Courses); ``` 当我输出selectResult时,我看到两个元素——每个都是一个字符串列表。而selectManyResult给了我四个字符串——所有课程依次排列。为什么会这样?根本区别是什么?