Avatar ·

Qual é a diferença entre Select e SelectMany no LINQ?

Olá a todos! Comecei a estudar LINQ e não consigo entender a diferença entre os métodos Select e SelectMany. Li a documentação, mas os exemplos são meio abstratos. Eu tenho uma classe simples: ```csharp public class Student { public string Name { get; set; } public List Grades { get; set; } } ``` E uma lista de estudantes: ```csharp var students = new List { new Student { Name = "Ivan", Grades = new List { 5, 4, 3 } }, new Student { Name = "Maria", Grades = new List { 4, 5, 5 } } }; ``` Quando eu escrevo: ```csharp var result = students.Select(s => s.Grades); ``` Eu obtenho uma coleção de duas listas. E o que acontece com SelectMany? Parece a mesma coisa, mas não exatamente. Eu tentei: ```csharp var result2 = students.SelectMany(s => s.Grades); ``` E obtive apenas uma coleção de números. Mas para que serve então o SelectMany? Em quais situações reais devo usá-lo? Ou é apenas açúcar sintático? Explique por favor com exemplos simples, quando