Qual é a diferença entre Select e SelectMany no LINQ?
Olá a todos! Estou aprendendo C# e LINQ, e não consigo entender a diferença entre os métodos Select e SelectMany. Ambos parecem ser usados para projeção de dados, mas o resultado é diferente.
Eu tenho um modelo simples: uma classe Student com um campo Name (string) e uma lista de Courses (List). Quero obter todos os cursos em que os estudantes estão matriculados. Aqui está o que tentei:
```csharp
public class Student
{
public string Name { get; set; }
public List Courses { get; set; }
}
var students = new List
{
new Student { Name = "Ivan", Courses = new List { "Matemática", "Física" } },
new Student { Name = "Maria", Courses = new List { "Química", "Biologia" } }
};
var selectResult = students.Select(s => s.Courses);
var selectManyResult = students.SelectMany(s => s.Courses);
```
Quando exibo selectResult, vejo dois elementos — cada um é uma lista de strings. Já selectManyResult me dá quatro strings — todos os cursos em sequência. Por que isso? Qual é a diferença fundamental?