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
1 Asked on December 23, 2020 by lizzp
1 Asked on December 23, 2020 by ibeth-carmona
1 Asked on December 22, 2020 by jalkhov
0 Asked on December 22, 2020 by verlyn-luna
1 Asked on December 21, 2020 by harvey66
0 Asked on December 21, 2020 by jose-ignacio-gonazlez
1 Asked on December 21, 2020 by alejandro-hernandez
2 Asked on December 21, 2020 by owo-ba
1 Asked on December 21, 2020 by candid-moe
1 Asked on December 21, 2020 by devinthe30s
1 Asked on December 21, 2020 by jorge-mp
0 Asked on December 20, 2020 by pedro-jer
0 Asked on December 20, 2020 by locura
2 Asked on December 20, 2020 by julin-taborda
1 Asked on December 18, 2020 by sundente
1 Asked on December 18, 2020 by rodrigo2324
Get help from others!
Recent Answers
Recent Questions
© 2023 AnswerBun.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP