LINQ中Select和SelectMany的区别是什么?
大家好!我开始学习LINQ,但始终无法理解Select和SelectMany方法的区别。我读过文档,但示例有些抽象。
我有一个简单的类:
```csharp
public class Student
{
public string Name { get; set; }
public List Grades { get; set; }
}
```
以及一个学生列表:
```csharp
var students = new List
{
new Student { Name = "伊万", Grades = new List { 5, 4, 3 } },
new Student { Name = "玛丽亚", Grades = new List { 4, 5, 5 } }
};
```
当我写:
```csharp
var result = students.Select(s => s.Grades);
```
我得到的是一个包含两个列表的集合。那么SelectMany会怎样?看起来差不多,但又不完全一样。我试过:
```csharp
var result2 = students.SelectMany(s => s.Grades);
```
结果得到了一个简单的数字集合。但为什么需要SelectMany?在哪些实际场景中使用它?或者它只是语法糖?
请用简单的例子解释一下,什么时候