Avatar ·

¿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