Cuándo usar .First() y cuándo .FirstOrDefault() en LINQ en C#?
¡Hola a todos! Recientemente comencé a estudiar C# y LINQ, y me encontré con una situación confusa. Hay dos métodos similares: `.First()` y `.FirstOrDefault()`. Entiendo que ambos devuelven el primer elemento de una secuencia, pero ¿cuál es la diferencia entre ellos?
Supongamos que tengo una lista de usuarios:
```csharp
List users = new List { "Alice", "Bob", "Charlie" };
```
Si escribo:
```csharp
string firstUser = users.First(u => u.StartsWith("Z"));
```
entonces obtengo una excepción `InvalidOperationException`. Pero si uso `.FirstOrDefault()`:
```csharp
string firstUser = users.FirstOrDefault(u => u.StartsWith("Z"));
```
entonces no hay excepción, y `firstUser` es `null`.
Pero, ¿cuándo es correcto usar cada opción? He leído que `.First()` lanza una excepción si no se encuentra nada, mientras que `.FirstOrDefault()` devuelve el valor por defecto. Pero no me queda del todo claro en qué escenarios vale la pena arriesgarse a una excepción, y en cuáles es mejor devolver `null` o el valor por defecto.