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给了我四个字符串——所有课程依次排列。为什么会这样?根本区别是什么?