¿Cuál es la diferencia entre Select y SelectMany en LINQ?
¡Hola a todos! Empecé a estudiar LINQ y no logro entender la diferencia entre los métodos Select y SelectMany. Leí la documentación, pero los ejemplos son algo abstractos.
Tengo una clase simple:
```csharp
public class Student
{
public string Name { get; set; }
public List Grades { get; set; }
}
```
Y una lista de estudiantes:
```csharp
var students = new List
{
new Student { Name = "Iván", Grades = new List { 5, 4, 3 } },
new Student { Name = "María", Grades = new List { 4, 5, 5 } }
};
```
Cuando escribo:
```csharp
var result = students.Select(s => s.Grades);
```
Obtengo una colección de dos listas. ¿Y qué pasa con SelectMany? Parece lo mismo, pero no exactamente. Probé:
```csharp
var result2 = students.SelectMany(s => s.Grades);
```
Y obtuve simplemente una colección de números. Pero entonces, ¿para qué sirve SelectMany? ¿En qué situaciones reales se usa? ¿O es solo azúcar sintáctico?
Explíquenme por favor con ejemplos simples, cuándo