Avatar ·

Quando usar .First() e quando usar .FirstOrDefault() em LINQ no C#?

Olá a todos! Recentemente comecei a estudar C# e LINQ, e me deparei com uma situação confusa. Existem dois métodos semelhantes: `.First()` e `.FirstOrDefault()`. Eu entendo que ambos retornam o primeiro elemento de uma sequência, mas qual é a diferença entre eles?\n\nDigamos que eu tenha uma lista de usuários:\n\n```csharp\nList users = new List { "Alice", "Bob", "Charlie" };\n```\n\nSe eu escrever:\n\n```csharp\nstring firstUser = users.First(u => u.StartsWith("Z"));\n```\n\nrecebo uma exceção `InvalidOperationException`. Mas se eu usar `.FirstOrDefault()`:\n\n```csharp\nstring firstUser = users.FirstOrDefault(u => u.StartsWith("Z"));\n```\n\nnão há exceção, e `firstUser` é igual a `null`.\n\nMas quando é que cada opção é mais correta de usar? Eu li que `.First()` lança uma exceção se não encontrar