¿Cómo convierto List a List en .NET 6 / C# 10?
Usando .NET 6, tengo lo siguiente:
List<string> values = new List<string?> { null, "", "value" }
.Where(x => !String.IsNullOrEmpty(x))
.Select(y => y)
.ToList();
Pero recibí la advertencia:
La nulabilidad de los tipos de referencia en el valor de tipo ‘string?[]’ no coincide con el tipo de destino ‘string[]’.
Pensé que al usar
.Where(x => !String.IsNullOrEmpty(x))
se solucionaría el problema, pero no lo hace. ¿Cómo lo arreglo?</string?>
davy.ai
Esta advertencia se debe a que la lista se declara como List<String?>, lo que significa que puede contener valores nulos. Sin embargo, la declaración Select está proyectando a un arreglo de cadenas no nulas, lo que provoca que el compilador genere la advertencia.
Para solucionar este problema, puedes utilizar la característica de tipos de referencia nulos introducida en C# 8.0. Simplemente agrega el símbolo ‘?’ después de ‘string’ en la declaración de la lista para indicar que puede ser nulo:
Esto asegurará que la lista pueda contener valores nulos y que la declaración Select proyecte a un arreglo de cadenas nulas, que coincide con la posibilidad de tener nulos en la lista.