Stack Overflow en español Asked by L. Ronquillo on January 4, 2022
Buen día, estoy haciendo un método para devolver registros en datatables.js
, parte de mi método, tiene la siguiente consulta:
var Roles = Ss.ListarSucursales().Where(
x =>
(x.NombreSucursal.IndexOf(searchColum, StringComparison.OrdinalIgnoreCase) >= 0) ||
x.Ciudad.Nombre.IndexOf(searchColum, StringComparison.OrdinalIgnoreCase) >= 0 ||
x.Colonia.IndexOf(searchColum, StringComparison.OrdinalIgnoreCase) >= 0).ToList();
El método funciona, pero me di cuenta que, por ejemplo, si en algún registro el valor de x.Colonia
llega como NULL
, me salta un error por tratar de filtrar un campo null. Quisiera poder filtrar por ese campo, sólo si ese campo no está vacío. Normalmente para eso, utilizaría !string.IsNullOrEmpty(x.Colonia)
pero no sé como implementarlo en el bloque de código anterior.
¿Podrían ayudarme? de antemano muchas gracias 🙂
Si te entendí bien, este código te va a ser de utilidad:
var Roles = Ss.ListarSucursales()
.Where(x =>
(x.NombreSucursal.ToLower().Contains(searchColum.ToLower()) ||
(x.Ciudad.Nombre.ToLower().Contains(searchColum.ToLower()) ||
(x.Colonia.ToLower().Contains(searchColum.ToLower()))
.ToList();
Lectura recomendada:
https://docs.microsoft.com/en-us/dotnet/api/system.linq.enumerable.contains?view=netcore-3.1
Answered by fredyfx on January 4, 2022
Prueba usando el operador ??
, de la siguiente forma:
la parte
x.NombreSucursal.IndexOf(searchColum, StringComparison.OrdinalIgnoreCase)
quede
(x.NombreSucursal??"").IndexOf(searchColum, StringComparison.OrdinalIgnoreCase)
lo anterior para cada una de las instrucciones que tienes como corresponda.
Lo que hace el operador ??
es que si lo que esta a su izquierda es NULL
retorna el valor que pones a su derecha; tal que si x.NombreSucursal
en cada interacción que sea NULL
devolverá cadena vacía y en los casos que no devolverá el valor de x.NombreSucursal
.
Este operador puede ser usado con cualquier tipo de dato; desde luego poniendo a su derecha un mismo tipo de dato al de su derecha, pues la derecha sería el valor por default; es decir si x.NombreSucursal
fuese un entero sería x.NombreSucursal??0
o si fuese un objeto x.NombreSucursal??(new ElObjeto())
.
Gracias
Answered by RobertoLeOr on January 4, 2022
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP